I am reading the Clean Code: A Handbook of Agile Software Craftsmanship book by Robert C. Martin. I will write short summaries of the book chapters as I go through them to serve as notes for me and anyone else.
Chapter 1: Clean Code
The book is about good programming, about how to turn bad code into good code. Code can be bad for several reasons:
- You’re coding in a rush
- Your boss is pushing you to finish soon
- You don’t have time to do a good job
- You want to get a quick fix out and tell yourself you’ll fix it later. Later equals never.
Clean code should be elegant, efficient, readable, simple, well-written, and without duplications.
Chapter 2: Meaningful names
- Use intention-revealing names. Good variable, function, and class names should reveal what it does, why it exists, and how it is used. If a variable name requires a comment, it does not reveal its intent. Instead of naming a variable like this
int d; // Elapsed time in daysIt is better to use
- Avoid words whose meanings vary from the intended meaning, e.g. calling a grouping of Accounts
AccountListwhen it does not contain a
Listbecause the word
Listhas special meaning to programmers.
- Use pronounceable names
- Names should be meaningful and searchable.
- Single-letter names should only be used as local variables inside short methods. The length of the name should correspond to the size of its scope.
- Shorter names are generally better than longer ones, so long as they are clear.
- Don’t pun or use inside jokes when naming things.
- Use names that reflect the system domain, the context, and the problems that must be solved.
- Avoid acronyms and confusing names which may bring anyone reading your code to confusing or wrong conclusions
- Classes and objects should have noun phrase names like
- Avoid names like
Infoin the class name.
- A class name should not be a verb.
- Method names should use verbs or verb phrase names, such as
- Accessors should be named for their value and prefixed with
- pick one word per concept and stick with it, e.g. retrieve, get, and fetch all mean the same thing. Choose one, and stick with it.
The next chapter is on Functions. I will add a link to it here as soon as I am done with it.