『良いコード/悪いコードで学ぶ設計入門 ―保守しやすい 成長し続けるコードの書き方』という本を読みました。
かなりわかりやすく、勉強になったので紹介させてください。
おすすめする人
独学でプログラミングを勉強している人
凝集度、結合度などを特に意識せず書いている人
設計についていろいろ調べたはいいものの、結局どう落とし込めばいいのかわからない人
おすすめしない人
業務などで既に設計を意識しながらコードを書けている人
どんな本か?
汚いコードとはどういうもので、綺麗なコードとはどういうものか、どうすれば改善することができるのかをコードを交えて解説する本です。
立ち位置としては入門書となっており、プログラミング初心者から中級者にランクアップしたい人が読むと幸せになれるんじゃないかと思います。
言語はJavaですが、難しい文法などは登場しないので、オブジェクト指向のプログラミング言語を触ったことがある人であれば問題なく読むことができます。
主に解説されているのは以下の6点です。具体的なコード例と共に解説されるので、どの章もとても分かりやすかったです。
オブジェクト指向
凝集度
結合度
名前設計
コメント
メソッド分割
クラス設計
リファクタリング
個人的に好きだったのは結合度の部分です。凝り固まったコードを分解していく手順がとても参考になりました。
感想
品質の高いコードの実例に触れる機会の少ない学生の身分としては、とても参考になる本でした。クリーンアーキテクチャやらオニオンアーキテクチャやらMVPやら、インターネットは様々な設計手法についての記事であふれています。
しかし、それらの記事は「設計についての基本的な考え方」や「設計論の具体的なコードへの落とし込み方」が身についていることが前提となっており、そこが抜けていると読んでもどうすればいいかわからなかったり、形をなぞるだけになってしまったりしてしまうのではないかなと思います(というか私はそうでした)。この本はその隙間を埋めてくれる存在だと思います。
設計を意識し始めてすぐぐらいの時に読めていたらもっと理解が早かったのにな、と思わずにはいられない一冊だったので、もし興味が湧いたら是非読んでみてください。
注意
なお、書評を書くためにググったら追加で読んだ方がよさそうな記事を見つけたので、この本を読んだ人はこの記事も読んでみるとよさそうです。
この記事を読んだ感想として、この本に全体的な視点が欠けている、という指摘は確かかなと思いました。
この本にはゲームや売買システムのサンプルコードがいろいろと出てきますが、全体の設計が見えないというか、実用的な設計になっていないことの方が多いです。
とはいえサンプルコードが実用に耐える必要があるかというとそうでもない気がしていて、「DogはAnimalを継承している関係です」ぐらいのサンプルとして受け取っておくのがいいのかもしれません。
あと言葉の定義が間違っていたりすることもあるようですが、技術系の単語は個人の思想と定義がごっちゃになっていくのは避けられない部分があるよなぁとも思ったり。
詳細な定義については都度自分で調べていくことが必要そうです。