- 1. Introduction
- 2. Chapter 1: Clean Code
- 3. Chapter 2: Meaningful Names
- 4. Chapter 3: Functions
- 4.1. Small!
- 4.2. One Level of Abstraction per Function
- 4.3. Switch Statements
- 4.4. Use Descriptive Names
- 4.5. Function Arguments
- 4.6. Have No Side Effects
- 4.7. Error Handling
- 4.8. How Do You Write Functions Like This?
- 5. Chapter 4: Comments
- 6. Chapter 5: Formatting
- 7. Chapter 6: Objects and Data Structures
- 8. Chapter 7: Error Handling
9. Chapter 8: Boundaries
- 10. Chapter 9: Unit Tests
- 11. [DRAFT] Chapter 10: Classes
- 12. Chapter 11: Systems
- 13. Chapter 12: Emergence
- 14. Chapter 13: Concurrency
- 15. [DRAFT] Chapter 14: Successive Refinement
16. Chapter 15: JUnit Internals
17. Chapter 16: Refactoring SerialDate
- 18. Drafts