ミノ駆動本こと「良いコード/悪いコードで学ぶ設計入門」を読み終えました。面白かったので感想をちょっと書いてみます。
https://gihyo.jp/book/2022/978-4-297-12783-1
なお、サブタイトルに「保守しやすい成長し続けるコードの書き方」とあるので、先日感想を書いた「継続的デリバリーのソフトウェア工学」と内容が被るかな〜と思いましたが、あまり被っていませんでした。
実のところ第4章を読んでいたころまでは、他の本にもよくある内容だなと、あまり良い印象を持っていませんでした。が、第5章ぐらいからコード例をある程度真面目に読まないと理解が進まないようになってきてから印象が良い方向に変わってきました。
この本では、例示として悪いコードを示し、それがどうして悪いのかを説明し、それを解消する良いコードを示すという説明方法を繰り返していきます。このコード例が結構良くできていて、読み易いです。デザインパターンに出てくるようなコード例もあるのですが、具体的に、どういう問題をどのように解決するのかが示されていてわかりやすいです。
あまり喜ばれる言い方ではないかも知れませんが、「継続的デリバリーのソフトウェア工学」の第3部「複雑さ管理の最適化」の内容を、より具体的かつコード例も豊富にしたような本であると感じました。
告白すると、かつての自分にはソフトウェアに保守しやすさが大事であるとの観念はありませんでした。保守に力点を置いた本を読んでもその利点を理解できていませんでした。自分の場合には、保守に関してOSS活動や仕事やらで痛い目に合い続けることで、かつて読んだ本に書かれていた保守の技法の意味がようやくわかってきたというのが正直なところです。本の書き方が抽象的であって具体的なコードに当て嵌めるだけの理解力が自分に足りなかったんだろうなとも思います。
この「良いコード/悪いコードで学ぶ設計入門」を当時の自分が読んでいたらひょっとしたらもっと早く保守を意識したソフトウェアを書けるようになっていたかもなと思います。偉そうなことを書きましたが、この本に書かれている方法の全てを私が実践できている訳でもなく、個人的に参考になる事柄が多く書かれています。(逆に自分ならこうしないという例もありましたが、細かい話なので置いておきます。)
最後の第17章も面白かったです。特に節17.1では「さらにステップアップするための設計技術書紹介」として、様々な本のどのような点が良いかを各々説明しています。自分が既に読んだ本に対する評価も適切であると感じたので、読んでない本の内に次に何を読むべきかの判断に役立ちそうでワクワクします。
実のところ、この本を買うかどうか迷っていたときに、目次にこの節を見つけて購入を決めました。
評価されるだけの本だなと思いました。書いて終わりではなくメンテナンスが必要となるソフトウェアには、この本にあるような保守に対する意識・技術が必要です。多くのソフトウェアエンジニアに読んで欲しいと思われた本です。