4 reasons to change code

April 7, 2021

Why do we change code?

In his book, Working Effectively with Legacy Code, Michael Feathers offers four reasons:

  1. Adding a feature
  2. Fixing a bug
  3. Improving the design
  4. Optimizing resource usage

I’ve yet to think of a 5th reason.

So what?

These 4 reasons are the basis for a personal rule when writing code:

Each pull request must address only one of these reasons.

Mixing concerns in a single PR can lead to all sorts of problems:

  • It makes the PR much harder to understand and review
  • It makes deploying the PR more dangerous (if a bug is found, is it due to the new feature, or the refactoring?)
  • It makes reverting the PR dangerous (you can’t revert a broken feature without also reverting useful bug fixes)
Share this

Related Content

The mechanics of test-driven development

Red-Green-Refactor may describe the mechanics of TDD, but not its essence.

What's the relationship between TDD and Evolutionary Design?

TDD doesn't give you ED for free, it only makes it easier.

TDD is slower the same way a drop cloth makes you slower

Painting without a drop cloth may be faster, but the hours of clean up outweigh savings.