😁

現場で役立つシステム設計の原則 ~変更を楽で安全にするオブジェクト指向の実践技法

に公開

前回読んだ『良いコード/悪いコードで学ぶ設計入門』が「悪いコードを見抜く目」を養う本だとすると、この『現場で役立つシステム設計の原則』は「じゃあ、どう直す?どう設計する?」を一段深く考えさせてくれる本だと思いました。

こちらも抽象論ではなく、なぜ変更しづらくなるのか/なぜ壊れやすくなるのかをオブジェクトの責務・依存関係・関心の分離といった観点から、かなり粘り強く、具体例ベースで解説してくれます。

特に印象的だったのは、「設計が悪い=センスがない」ではなく、“変更を想定していない構造になっているだけ”という切り口で語られている点。

現場でよく見る
・ちょっとした仕様変更なのに影響範囲が広すぎる
・if文が増殖して誰も触れなくなる
・クラスは分かれているのに、なぜか全部が絡み合っている

こういった“あるある”に対して、「それは設計の原則的にこういう状態だから起きている」と名前を与えてくれるのが、この本の一番の価値だと思います。

ドメイン駆動設計(DDD)についても触れられていますが、いきなり戦略DDDに突っ込むというより、
値オブジェクト・エンティティ・責務の置き場所といった実装レベルでの考え方が中心なので、「DDDって難しそう」と感じている人ほど読みやすいはず。

正直、駆け出し〜中級手前くらいでこの本を読めるかどうかで、その後のコードの書き方はかなり変わると思います。

『良いコード/悪いコードで学ぶ設計入門』で「これは悪い」と気づけるようになり、
この本で「じゃあ、どう設計すればよかったのか」が腹落ちする。

この2冊はセットで読むと、かなり強いです。

Discussion