yurakawa's blog

ひびのめもだよ!

『Clean Code アジャイルソフトウェア達人の技』を読んだ

アスキードワンゴにより再出版された日本語訳 Clean Code を拝読した。

Clean Code アジャイルソフトウェア達人の技 (アスキードワンゴ)

Clean Code アジャイルソフトウェア達人の技 (アスキードワンゴ)

アーキテクチャの設計やドメインモデリングではなく、コードの細部についての本。

印象に残ったのは6章 オブジェクトとデータ構造#データ/オブジェクトの非対称性 の以下の文章。

手続き型(データ構造を使用するコード)は、新たな関数を既存のデータ構造に影響を与えずに追加することができます。オブジェクト指向の場合、既存の関数を変えることなく、新たな関数を追加することが可能です。

逆もまた成立します。

手続き型だと、新たなデータ構造を追加するには、既存のすべての関数を変えなければならないので、難しくなります。オブジェクト指向の場合、すべてのクラスを変えなければならないので、新たな関数を追加することは難しくなります。

複雑なシステムでは、新たな関数を追加することよりも、新たなデータ型を追加することのほうが多いでしょう。この場合には、オブジェクト指向がうまく適用するでしょう。逆にデータ型を追加するよりも、関数を追加することのほうが多い場合もあるでしょう。その場合には手続き型とデータ構造のほうがよく適合します。
熟練したプログラマなら、オブジェクト指向が常に優れているという考えが神話であることを理解しています。単純なデータ構造とそれらを操作する手続きのほうが必要とされる場合もあります。

手続き型で書いたほうが良さそうと感じるときのもやもやが言語化されて良き。

第11章 システム についてはサンプルコードが少ないせいか理解が充分でないので他書籍とかで補強しないと。

builderscon2018の以下の発表で本書で扱っていたような内容を話されていたのでタイムリー感があった。 builderscon.io