Book Review: Clean Code: Chapter 17. Smells and Heuristics

This is review of the 17th and the final chapter from the book-”Clean Code: A Handbook of Agile Software Craftsmanship” by Robert C. Martin.

This is the final chapter of this book.
Smell of a bad code is something that would trigger your senses to take a second look.
Some of these are plain good advice.

This chapter effectively summarizes all that was discussed before- gives you a pat on the back and you are on your own !!!

Comments

C1: Inappropriate Information
C2: Obsolete Comment
C3: Redundant Comment
C4: Poorly Written Comment
C5: Commented-Out Code

Environment

E1: Build Requires More Than One Step
E2: Tests Require More Than One Step

Functions

F1: Too Many Arguments
F2: Output Arguments
F3: Flag Arguments
F4: Dead Function

General

G1: Multiple Languages in One Source File
G2: Obvious Behavior Is Unimplemented
G3: Incorrect Behavior at the Boundaries
G4: Overridden Safeties
G5: Duplication
G6: Code at Wrong Level of Abstraction
G7: Base Classes Depending on Their Derivatives
G8: Too Much Information
G9: Dead Code
G10: Vertical Separation
G11: Inconsistency
G12: Clutter
G13: Artificial Coupling
G14: Feature Envy
G15: Selector Arguments
G16: Obscured Intent
G17: Misplaced Responsibility
G18: Inappropriate Static
G19: Use Explanatory Variables
G20: Function Names Should Say What They Do
G21: Understand the Algorithm
G22: Make Logical Dependencies Physical
G23: Prefer Polymorphism to If/Else or Switch/Case
G24: Follow Standard Conventions
G25: Replace Magic Numbers with Named Constants
G26: Be Precise
G27: Structure over Convention
G28: Encapsulate Conditionals
G29: Avoid Negative Conditionals
G30: Functions Should Do One Thing
G31: Hidden Temporal Couplings
G32: Don’t Be Arbitrary
G33: Encapsulate Boundary Conditions
G34: Functions Should Descend Only
One Level of Abstraction
G35: Keep Configurable Data at High Levels
G36: Avoid Transitive Navigation

Java

J1: Avoid Long Import Lists by Using Wildcards
J2: Don’t Inherit Constants
J3: Constants versus Enums

Names

N1: Choose Descriptive Names
N2: Choose Names at the Appropriate Level of Abstraction
N3: Use Standard Nomenclature Where Possible
N4: Unambiguous Names
N5: Use Long Names for Long Scopes
N6: Avoid Encodings
N7: Names Should Describe Side-Effects

Tests

T1: Insufficient Tests
T2: Use a Coverage Tool!
T3: Don’t Skip Trivial Tests
T4: An Ignored Test Is a Question about an Ambiguity
T5: Test Boundary Conditions
T6: Exhaustively Test Near Bugs
T7: Patterns of Failure Are Revealing
T8: Test Coverage Patterns Can Be Revealing
T9: Tests Should Be Fast

For review of other chapters- please see this post.


Like it??? Save it !!!
  • Digg
  • del.icio.us
  • description
  • Reddit
  • TwitThis

2 comments to Book Review: Clean Code: Chapter 17. Smells and Heuristics

  1. Book Review: Clean Code: A Handbook of Agile Software Craftsmanship | Technology Cafe
    April 22nd, 2009 at 9:13 am

    [...] Successive Refinement Chapter 15: JUnit Internals Chapter 16: Refactoring SerialDate Chapter 17: Smells and Heuristics Like it??? Save it [...]

  2. Jak pisać dobry kod? | Agile Surfing
    January 29th, 2010 at 2:45 pm

    [...] Tutaj znalazłem podsumowanie rozdziału 17, gdzie zebrane są wszystkie “heurystyki” i “brzydkie zapachy” związane z kodem. [...]

Leave a Reply

You can use these HTML tags

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>