TL;DR
- 優れたプログラマと平凡なプログラマを分けるのは設計スキルであり、設計の目標はソフトウェアの複雑さを軽減することである。
- 複雑さとは何か、不要な複雑さをどう見分けるか、どう最小限に抑えるかを順に扱う。
対象読者
設計スキルを伸ばしたいプログラマ向けの本である。説明用のコードが少なく抽象的な議論が多いので、コードレビューと併せて読むのがよい。自分のコードより他人のコードのほうが設計上の問題を見つけやすく、本書の内容に照らして「どう改善できるか」「それが複雑さとどう関係するか」を考えられる。
設計スキルを上げるには、レッドフラグを見分ける方法を学ぶことが近道である。本書は主要な設計上の問題ごとにレッドフラグを紹介している。ただし、どんなルールにも例外があり、極端に追求すると悪い方向に進む。各章の「Taking it too far」の節では、やりすぎを見極める方法を示している。
目次
- It's All About Complexity
- The Nature of Complexity
- Working Code Isn't Enough
- Modules Should Be Deep
- Information Hiding (and Leakage)
- General-Purpose Modules are Deeper
- Different Layer, Different Abstraction
- Pull Complexity Downwards
- Better Together Or Better Apart?
- Define Errors Out Of Existence
- Design it Twice
- Why Write Comments? The Four Excuses
- Comments Should Describe Things that Aren't Obvious from the Code
- Choosing Names
- Write The Comments First
- Modifying Existing Code
- Consistency
- Code Should Be Obvious
- Software Trends
- Designing for Performance
- Decide What Matters
感想
AI 時代の今だからこそ、この本の内容を Skills や Agents、Rules に落とし込んで、複雑さの軽減に努める必要があるのかもしれない。
なお、各章のまとめは英語の原文を自分で日本語にしたものなので、原文と離れているところもある。