「オブジェクト設計 スタイルガイド」という本を読みました

実は2年前ぐらいからこの本を持ってたんですが、ちょっと読みづらくて中々進まず…

オブジェく外設計スタイルガイド

 

そして時代はAIでプログラミングする時代になり、あと少しで読了というところで放置していましたが、今日やっと!全部読みました。

まぁねー、この本を買った当時からは考えもつかないスピードでAIプログラミングが一般的になったので、

「もうプログラミングを勉強する意味がないのでは?」

と思われる方も多いと思うんですよ。

でも、その答えには

「あります!」

とお答えしたいなと思います。詳しくは下記に書きましたので、もし興味あったら読んでみてください。

このAI時代にプログラミングを勉強する意味

さて、この本なんですが、読んだきっかけはどこかは忘れてしまいましたが、どこかで紹介されていたからです。

結論、勉強にはなりましたが、読みづらい!

なんか日本語が頭にスッと入ってこないんですよね。技術書あるあるなんですが(笑)

あと、この本はコードのサンプルを本当の言語で書いてないんですよ。

いろんな言語をやっている人が読めるように、という斬新な試みだとは思うんですが。

個人的には本当の言語で書いてもらったほうがわかりやすかったのでは…。と思いました。

 

とはいえ、大いに勉強になったと思います!

最初の方を読んだのはもう2年以上も前なので、ページをめくりながら書いていきます。

①サービス オブジェクト

最初がこれから始まってくれたのは嬉しいです。

というのは、プログラムを書いていく中で、これが一番扱いが難しいし、こういうのをどう設計するのかが腕の見せ所でもあるからなんですよ。

例えば、「プレーヤー」とか「請求書」とかはオブジェクトとして想像しやすいですよね。

どんなプロパティを持って、どんなメソッドを実装すればよいのか、なんとなくわかります。

しかし、プログラムはそれだけでは動作しなくて、

「プレーヤーに名前を付けたり、見た目をカスタムするプログラム」

とか

「月末になったら請求書を自動的に発行するプログラム」

とかが必要なわけですよ。それらの設計についての指針は大変得るところがありました。

②イミュータブルオブジェクトではモディファイアメソッドは宣言的な名前にする

例としてmoveLeft()というメソッド名よりtoTheleft()というメソッド名の方がよい、moveLeft()はオブジェクトの状態がどう変わるかわからない、というのがあげられています。

ちょっとこの話は複雑でコードサンプルとか上げないとわかりづらいと思いますが、詳しくは本書を見てみてください。

③コマンドメソッドでやることを限定し、イベントを使用して二次的なタスクを実行する

コマンド・クエリ責任分離(CQRS)の話ですね。


他にもいろいろあるんですが、読みづらいことを除けば良書です!!

AIに作らせたコードでも、

「ここはプリミティブな値じゃなくて、独自のオブジェクトにして書き直して」

と命じることで、より良いコードができあがってきます。

何度か読み返したいなと思いました。