書評|「良いコード/悪いコードで学ぶ設計入門」

この記事は下記の本の書評になります。

  • 良いコード/悪いコードで学ぶ設計入門

では、見ていきます。

この本はどんな本?

本書の内容ですが、タイトルにも書いてあるとおり具体的な悪いコードを題材にして「どうして悪いと言えるのか」「そしてそれをどう良いコードに変えていくのか」を設計・実装の観点で見ながら解説している本です。

また本書は、翔泳社 IT エンジニア本大賞 2023 年の技術書・ビジネス書の各ベスト 10 にランクインしています。

では、では、自分が読んだ結果の評論を書いていきます。

書評

この本はだれが読むべき?

ジュニア Java エンジニアが読むのが良いかと思います。

「ジュニアエンジニア」という点ですが、この本のタイトルにも入門という文字があるように扱っている知識が全体的に入門レベルです。実際、自分がミドル以上のレベルですがほぼ既知の内容でした。

具体的には、リーダブルコードの内容・OOP のパターンやそもそも interface の意義などです。

「Java」という点ですが、本書で説明時に利用される言語と思想が Java + OOP であるのがその理由です。全体的に、Java でどう実現するかという具体性が強い解説がやや多めのウエイトで、かつその上に OOP に関する内容も多めでした。

本書では、他の言語・FW でも根底となる思想は共通である旨のことが書かれており、それに同意しつつも、とはいえ具体的なコードとしては Java を読まないといけません。本書はタイトルの通り、「具体的なコードで解説をする」という観点であるが故に、Java のことを知っているような人が読むほうが読みやすいのかなーとは思いました。

Java・OOP に依存している点もある

個人的な意見として、Java・OOP に依存しているような解説もあるように感じられました。

例えば、この本では「if/switch などで分岐させずに interface で分岐させるべき」という旨のススメがあります。ですが、そもそも React 界隈のフロントエンドではクラスを使うべきではないですし、TypeScript の never 型などを使えば switch でも十分だと思っています。むしろ、クラス・Interface の導入は過剰な実装になりがちなので自分だったら PR レビューではじくかと思います。

とはいえ、全体を通してだと普遍的な内容も多くあります。

具体例が多いので抽象的でわからない人に良さそう

本書のタイトルの通り、具体的なコードで良い悪いを解説してくれます。そのため、抽象的な知識としては理解しているものの、具体的なコードで実現できるところに至っていない人にはかなり刺さるかと思いました。

抽象的な知識を理解できるような本としては、例えばプリンシプロオブプログラミングなどが典型的かと思います。他にも例えばリーダブルコードも名著の1つで具体的な説明も合わさって説明されていますが、具体例が少ないと感じるなら本書を読むと具体例に更に触れることができるので良いかと思いました。

おわりに

タイトルにある「入門」という文字に気付かずに買ってしまったこともあり、書いてある内容についてはほぼ既知だったので、ばっと数時間で読み終わりました。

久しぶりに Java + OOP について触れたので、「そういえば、そうだったなー」と思うこともあり新鮮な気持ちになりながら読めて楽しかったです。