TL;DR

  • 優れたプログラマと平凡なプログラマを分けるのは設計スキルであり、設計の目標はソフトウェアの複雑さを軽減することである。
  • 複雑さとは何か、不要な複雑さをどう見分けるか、どう最小限に抑えるかを順に扱う。

対象読者

設計スキルを伸ばしたいプログラマ向けの本である。説明用のコードが少なく抽象的な議論が多いので、コードレビューと併せて読むのがよい。自分のコードより他人のコードのほうが設計上の問題を見つけやすく、本書の内容に照らして「どう改善できるか」「それが複雑さとどう関係するか」を考えられる。

設計スキルを上げるには、レッドフラグを見分ける方法を学ぶことが近道である。本書は主要な設計上の問題ごとにレッドフラグを紹介している。ただし、どんなルールにも例外があり、極端に追求すると悪い方向に進む。各章の「Taking it too far」の節では、やりすぎを見極める方法を示している。

目次

  1. It's All About Complexity
  2. The Nature of Complexity
  3. Working Code Isn't Enough
  4. Modules Should Be Deep
  5. Information Hiding (and Leakage)
  6. General-Purpose Modules are Deeper
  7. Different Layer, Different Abstraction
  8. Pull Complexity Downwards
  9. Better Together Or Better Apart?
  10. Define Errors Out Of Existence
  11. Design it Twice
  12. Why Write Comments? The Four Excuses
  13. Comments Should Describe Things that Aren't Obvious from the Code
  14. Choosing Names
  15. Write The Comments First
  16. Modifying Existing Code
  17. Consistency
  18. Code Should Be Obvious
  19. Software Trends
  20. Designing for Performance
  21. Decide What Matters

感想

AI 時代の今だからこそ、この本の内容を Skills や Agents、Rules に落とし込んで、複雑さの軽減に努める必要があるのかもしれない。

なお、各章のまとめは英語の原文を自分で日本語にしたものなので、原文と離れているところもある。

関連