『オブジェクト指向設計実践ガイド』読書会での感想メモ

6/1 から 8/24 まで、フィードフォース社内で『オブジェクト指向設計実 践ガイド』の読書会を主催しました。 loading... ↑ これはブログ記事に使うための先行 Tweet でした。やっと使えたw 都度メモを取って会社の Slack channel に書いていたのですが、公開の タイミングを逃して後悔していました。そんな折、kano-e さんが会社の 新生開発者ブログに記事をポスト。 空気を読まずに私もポストします。個人ブログに。本当に五月雨式のメモ で自分向けです。 第1章 オブジェクト指向設計 まだ意識が高まっておらず、感想を書いていなかった。プロローグ的な章。 第2章 単一責任のクラスを設計する これらが当たり前に出来るスキルが必要だと思った。 健康的な書き方をほかのプログラマーに促進するコードを書く atter_reader 等を介して、複雑か簡単かどうかさえも見せないように 隠蔽する リファクタリングでメソッドへの切り出しをすることで、クラスの責務 を明確にする 決断を先延ばしにする 第3章 依存関係を管理する DI 初登場!! 第3章は P19 の『オブジェクト指向設計とは、「依存関係を管理する こと」です。』を具体的に説明した章 とにかく依存関係を減らすことが重要 DI メソッドでキーワード引数を使うことで、パラメータの順序依存をなくす ファクトリパターンを使った外部インターフェイスのラッピング あまりに複雑だと、ラッピングしすぎないほうが良いことも 自身より変更しないものに依存しなさい Ruby にはインターフェイスがないので、エンジニアのスキルがな いと振る舞いに気づかないことも 本質的に抽象はより安定 Jpeg, Png, Gif などより、Image といった抽象度を高めたオブジェ クトのほうが変更されづらい 第4章 柔軟なインターフェイスをつくる ◆ P102 の図は少し煙に巻かれた気がした “#prepare_trip” に self を渡す発想はなかった でも、self には “.bicycles” という振る舞いが必要だから、bicycles をそのまま渡せば良いのでは? CarMechanic class とか登場したら、 “....

2017-11-01 (Wed) · masutaka

『オブジェクト指向設計実践ガイド』を読んだ

本当に良い本でした。読んで良かった。初心者を中心に中級者にも刺さる 本だと思います。輪読などして、チームで読むとオブジェクト指向設計の そもそもの話をしなくて良さそうです。 難しい話が易しく説明されており「あ、そうだったのか」と思うことが度々 でした。ボリュームも全9章とコンパクトで、1日1章読むのに丁度よかっ たです。 読んでメモった箇所を中心にまとめていきます。 第2章 単一責任のクラスを設計する インスタンス変数へのアクセス方法を誤解していました。 P46 変数はそれらを定義しているクラスからでさえも隠蔽しましょう 今まで他のクラスから隠蔽する時は、直接 @hoge などにアクセスしてい ましたが、中からも attr_reader などで隠蔽する必要があるそうです。 「データではなく、振る舞いに依存する」ためだそうです。 メモ化などでこうした手法は使っていたけど、単純な参照も隠蔽する必要 があるのですね…。 ただ、中からしか使わない変数も単純な attr_reader を使っていたのは、 納得いかなかったです。こうして外から隠蔽する必要はないでしょうか? class Hoge attr_reader :hoge # 外からも参照される #... private attr_reader :hogehoge # 中からしか参照されない #... end 第3章 依存関係を管理する 「依存オブジェクトの注入(DI)」を中心に疎結合なコードの書き方がま とまった章です。 DI は正直今までピンと来ていませんでしたが、この章を読んで完璧に理 解しました。10 年前から使っていました…。 loading... 数日経ってもまだ何か言ってる。 loading... loading... P80 自身より変更されないものに依存しなさい この章はこれに尽きると思います。 第4章 柔軟なインターフェイスを作る P104 仮にオブジェクトが人間だとして、自身の関係を説明できるとしましょ う。すると、図4.5では、Trip は Mechanic に「私は自分が何を望んでい るかを知っているし、あなたがそれをどのようにやるかも知っているよ」 と伝えているはずです。(中略) **この手放しの信頼が、オブジェクト指向設計の要です。**これによって、 オブジェクトは自身をコンテキストに縛り付けることなく、共同作業でき るようになります。また、これは成長し、変化することが期待されるアプ リケーションには必要不可欠です。 (太字は引用者によるもの) これを読んで、なぜかアジャイルについて腑に落ちました。理解するのに...

2016-09-22 (Thu) · masutaka