patorashのブログ

方向性はまだない

「現場で役立つシステム設計の原則」読書会 vol.1

最近、社内勉強会で、「現場で役立つシステム設計の原則」読書会をやってます。そして、今年に入ってから会社でテックブログが始まりました。こちらもよろしくおねがいします。

tech.rhizome-e.com

そちらのブログのほうでも、読書会レポートを参加者で交代で書いてます。

しかし、まぁ自分で思ったことはこっちのブログでも書いとこうかなぁと思うので、こっちでも書いときます。

本はこちらです。

1章 小さくまとめて分かりやすくする

感想は箇条書きでメモってました。

  • メソッドへの切り出し、クラスでの切り出しは既によくやっている
  • 切り出すことでテスト可能になり、安心して使うことができる
  • テスト可能になるとリファクタリングが可能になる
  • 値オブジェクトについては、聞いたことはあったが、あまり活用したことがなかった。
  • こんなに小さなクラスでも定義しまうのかという驚きがあった。よく十徳ナイフのようなごちゃごちゃしたクラスを作ってしまうことがあったが、それくらいなら小さいクラスを作ったほうがマシかなと思った。小さいクラスを作ることに罪悪感というか、なんとなくダメみたいな気持ちになってたが、それが払拭された。
  • 型を付けることで、間違いが起きにくくなる。型を活用する安心感をまだあんまり感じたことがなくて、むしろ野暮ったいくらいに思っていたけれど、最近になってようやく理解できるようになってきた。
  • バリューオブジェクトを意識するだけでも、再利用可能なドメインモデルを沢山作ることができて、1つの会社でやっていると、同じようなドメインモデルを活用することが多いから、仕事が捗りそうだなと感じた。
  • ここにきてようやく初めてオブジェクト指向とはなんぞやを理解したように思えた。

雑感

1章を読んだだけで、かなり目から鱗が落ちたような感じでした。俺は全然オブジェクト指向をちゃんと理解できてなかったなと痛感しました。

1章を読んだ後に、試しにJavaScriptをTypeScriptに変えてみようかなと思い、 1つのファイルを修正してみたのですが、型を意識することと、値オブジェクトを意識するようにしたら、「読むだけで意味のわかるコード」になったなと思いました。 もちろん、今までも意味がわかるようにメソッドに切り出して処理に意味のある名前を付けていたのだけれど、中で扱っている値はいわゆるプリミティブな値のままだったので、わちゃわちゃやってるなぁという感じでした。

確実にプログラマとしての腕が上がったな、という気持ちになれたので、この後の章を読んでいくのが楽しみになりました。