August 29 - Chapter 1

September 5 - Chapters 2, 3

Chapter 2 - Naming

Overall:

Dos:

Donts:


Specific Names to Avoid:


"People are also afraid of renaming things for fear that some other developers will object. We do not share that fear and find that we are actually grateful when names change (for the better). Most of the time we don’t really memorize the names of classes and methods"

What is noise?

Refactoring

If you are using an integer vs. a variable, use a variable if you're going to use it more than once

Use something from the solution domain, not the problem domain

-I prefix for interfaces vs. -Implementation prefix for implementation of interfaces

Summary: names need to be clear and understandable

Chapter 3 - Functions

Small functions and stepdown rule make it easier to test code

Separating on level of abstraction different but helpful way to approach writing functions

Low-level implementation should be separated from higher-level functions

Functions vs. methods:

Does Python's looseness contribute to messier code?

Higher-level functions that require a lot of information:

Adding another parameter into a function

Active code reviews/PRs contribute to better code quality

Liked point about having a logical/natural ordering to arguments

Summary: keep functions short, do only 1 thing, and readable. Keep number of parameters to a function low (3 or fewer). Refactor code as you go along.

Chapter 4: Comments

Chapter 5: Formatting

Chapter 6: Objects and Data Structures

Summary: Objects expose behavior and hide data; Data Structures expose data and have no significant behavior.

Chapter 7: Error Handling

Summary: Indicate errors by throwing exceptions rather than relying on special return types. Propagate exceptions to places that should know about them.

Chapter 8: Boundaries

Summary: Interfaces are cool. Use tests to lock down API behaviors before relying on the behaviors in production code.  Use interfaces to mock out non-existing code.

Chapter 9: Unit Tests

Chapter 10: Classes

Chapter 11: Systems

Chapter 12: Emergence

Chapter 13: Concurrency

Code Smells

Presentation

Present (30 min)

Goals for having Clean Code Best Practices

Best Practices presentation

Code smells presented as recommendations at the beginning of the meeting:

Mock Trials (15 min each, total 30 min)

Goals

  1. To remind folks that things aren't always clear-cut and it's important for folks to think for themselves as each context is different - even though there's a well-respected published book on this topic.
  2. To remind folks that sometimes things can get subjective and be conscious of our own righteous/religious POVs when reviewing people's code.
  3. To have fun as we explore these topics further in edX engineering with light-hearted debates.

Roles

Trials

(Defendants: Uncle Bob's position on these)