What is it, naokirin?

Tidy First? を読んだ

2024年末にKent Beck氏による著書「Tidy First?」の日本語訳が出版されました。

全体で160ページほどとページ数としては少なく、プログラミングに慣れている人からすると、2〜3時間ほどで読み切れる分量となっています。ソフトウェア設計に関しての本は数多ありますが、本書の面白い点として「どうコードを整理するか?」についてだけでなく、「いつ整理するか?」という点も触れられている点だと思われます。

Kent Beck氏としては、「リファクタリング」という言葉が独り歩きして、単なる無秩序なコードの整理として意味されるようになった、そしてそれが機能開発を停止し、あまつさえ破壊的変更を加えるようになった、そのことが本書を書くきっかけとなったようです。

第一部

コードに対して整理をする際に、どのような方法があるか?というのが第一部です。 このあたりは、他書籍で読んだことがある人も多い内容ではないかと思われます。

とはいえ、再度 リファクタリング、そして整頓(Tidy, タイディー)に目を向けるうえではよい出発点になるかと思います。

ざっと読んだ感想として、「実装パターン」を彷彿とする内容でした。実装パターンは、これらをかなり詳細に1冊全体を使って紹介しているため、実装パターンを読むほうが「どのような方法があるか?」については知ることができるかと思います(ただ、原著・訳書とも絶版で中古市場でプレミア価格となっているようなので、可能なら洋書の電子書籍がよさそうです)。

実装パターン

実装パターン

Amazon

第二部

第二部では、「いつ整頓するか?」に焦点を当てています。

内容としては、 * 機能開発と整頓をどう進めるか? * どのようなステップで進めるか? * どのくらいのサイズでおこなうか? * どのようなリズムでおこなうか? * そして、いつ行い、どんなときに行わないか? です。

多くはプルリクエストやコミットの内容に関わってきます。たとえば、「同じプルリクエストに、機能変更(ふるまいの変更)と整頓(構造の変更)を入れない」といったことです。

整頓において、大事なのは「ふるまいの変更をしやすくする」ことで、それに見合うコストを意識する点が触れられています。

第三部

第三部の大きなテーマとして、「結合(度合い)」があります。

ソフトウェアのコストとは、変更にかかるコストであり、変更にかかるコストとは、そのほとんどが結合(度合い)に一致する、というものです。

そのため、ソフトウェアとしては「疎結合・高凝集」を目指すべきというわけですが、これをひたすらに目指すと、その分コストがかかります。そのため、いかにトレードオフの良いバランスの場所を目指すかというのが第三部の内容です。

まとめ

ページ数が少ない分、それぞれの内容もかなり簡潔にまとまっています。

実装パターンが絶版の中でいうと久しぶりにコード整理に関する書籍が出たこと、さらにこの整頓に対してどのように進めるべきかの指針を与える内容が記載されていることはよかったなと思います。

一方で、一部用語など(たとえば「結合」や「凝集」)についての詳細な説明は書かれていません。このあたりは初心者向けではなく、ある程度知識や経験のあるプログラマ向けと言えると思います。