脳に収まるコードの書き方を読んだ。面白かった。

明日(2024年6月18日)発売!

www.oreilly.co.jp

どう書くのがいいんだろうなぁ?

複雑なコードと向き合うときは「あー、これはメモを取りながら読まないと迷子になるやつだ」ってなる。最初はわりとキレイに作られていたとしても、機能追加を重ねていくとだんだん読めなくなっていく。

だから「時間が経っても読みやすいコードってどう書くのがいいんだろうなぁ?何かヒントがあるかなぁ?」って思いながらこの本を開いた。先に書いておくと、ヒントはあった。

アウトサイドインのTDD

全然予想してなかったから、おー!と思ったのが、説明をTDDで進めていくってところ。好き。

単に「脳に収まるコードとはこういうものだよ」と説明するだけじゃなくて、具体的なサンプルプロジェクトを通して、アウトサイドインのテスト駆動開発で少しずつコードを書き進めながら著者の考え方を教えてくれる。

TDDで進めてくれて嬉しいのは、やっぱり著者とペアプロしている気分で考え方を教えてもらえるところだよなーって思った。自分だったらこうするけど、著者はそうするんだーなるほどなぁとかを考えながら読んで楽しい。

アウトサイドインのアプローチでフェイクを使いながらのテスト駆動開発なのも、自分にとっては良い感じだった。最近自分はインサイドアウトの方をよく目にするので、自分の中でバランスが取れていい。

明確な基準

「読みやすいコード」って感覚になりがちなので、「これって脳に収まるコードなのかな?どうかな?」ってなってしまうかと思いきや、「脳に収まるコード」として「7」という明確な基準を示してくれている。上下するだろうことが分かったうえで、でも言い切ってくれてるので、これは分かりやすくていい。

そして、このままでは脳に収まらなくなってしまうコードをどのような観点で「脳に収まるコード」にしていくのか、その際に陥りやすい過ちは何か、その回避方法はどうなるのか、を具体的に示してくれていてとても勉強になった。

ヘックスフラワーのフラクタルアーキテクチャは、視覚的にもイメージしやすくていいね。悪魔の代弁者を使って三角測量でテストを追加していく流れや、副作用を分離する流れも面白かった。(←この文章を読み返してみて、本書を読んでない人には呪文のように見えているかもしれないと思った。なんかちょっと自分のことを頭良い感じに見せたかったのかもしれない。ゆるして 😇 )

仕事で読みやすいコードを書くにはどうすればいいか?

僕はリーダブルコードは好きなので、「脳に収まるコード」もそんな感じなのかな?と思ってたけど、違った。リーダブルコードのように「読みやすいコード」についてさまざまな観点からのTipsがずっと書かれているわけではない。これについてはちょっと注意が必要かな。そういうのを期待してたら驚いてしまうかもしれない。

「脳に収まるコードとはどんなコードか?」についての割合はそこまで高くない(←僕の感覚)。コードについてだけでなく、そのコードをどうやって書くか、複雑になりそうなときにどう分解するかについても書かれているし、もっと広く、そういうコードを書くための習慣や考え方、そしてそれを維持するためのチーム内での働き方についても触れられている。チームワークやトラブルシューティングについてなど。

だから、手に取るときは、「コード」や「アーキテクチャ」をめちゃくちゃ期待するというよりも、それも含めて「仕事で読みやすいコードを書くにはどうすればいいか?」という観点で読み始めるのが良いと思う。

あぁ、それ知ってるなぁ

この本を読みながらちょくちょく感じたのは「あぁ、それ知ってるなぁ」ということ。10年以上のプログラミングの経験があれば、どこかで聞いたことのあることが並んでいるかもしれない。

でも、それらは、これまでバラバラに語られていたことだよなと思う。TDDのことや、コメントの書き方、良いログの残し方など。そんな、これまでバラバラに語られていたことを著者が自身の様々な経験をもとにして「脳に収まるコード」というテーマでまとめてくれている。

だから、自分の中で、知ってはいたけど忘れてしまっていたことなどが、この本を読むことで「あぁ、確かにそういう考え方を使ってやっていけばいいかもな」というヒントになって表にでてきてくれた。ありがたい。

もちろん、中には考えたこともなかった手法などもあって(メソッド名を隠してシグネチャだけを見る、とか)、そういうのも面白いなと思うし、気になった部分を掘り下げていくのもよさそうだなと思った。

面白かった!

ってことで、読んで良かった。面白かった。経験豊富な著者とペアプロをしている気分で「脳に収まるコード」を書くための考え方や習慣を学びたい方に、おすすめの一冊です。

「明日発売!」って書いちゃったから、今日中に書き終わってよかった。セーフ。