天の月

ソフトウェア開発をしていく上での悩み, 考えたこと, 学びを書いてきます(たまに関係ない雑記も)

オブジェクト指向のこころを読む会 Vol.10に参加してきた

yr-camp.connpass.com

こちらのイベントに参加してきたので、会の様子と感想を書いていこうと思います。

会の概要

タイトルの通りオブジェクト指向のこころを読んでいく会です。今日は第10章でした。

会の様子

章の感想戦

Drawingのパッケージ

P161のDrawingはどこにパッケージとして属するのだろう?という話をしていきました。

パッケージとしては今回の文脈だとShapeとDrawingは違うパッケージになっているのが良い気もするが、ShapeだけがDrawingを使っているのであれば同じパッケージでもいいのではないか?という話になりました。

Bridgeパターンの連携方法

BridgeパターンでAbstractionとimplementorを連携させる際は、必ず集約で連携させる必要があるのか?という話をしていきました。

集約の方が好ましい場面が多いのは間違いないけれど、依存が必要なときは依存で連携させてもBridgeパターンとして機能しそうだという話が出ていましたが、依存のほうがいい例は出てきませんでした。

Bridgeパターンをいつ使うか?

まず、2重階層の継承が出てきたときは一つのシグナルになるかもしれないという話をしていきました。

ただ、それはBridgeパターンの理解としては浅そうだという話になり、抽象的側面の中にある実装(方法)が、側面とは別の理由で変更がされそうなときにBridgeパターンを使おうと考えるのがよいのではないか?という結論になりました。

strategyパターンとBridgeパターンの違い

strategyパターンは動作のバリエーションがあるため動的な側面から見る必要がある点に加えて、1対多の関係性で結合度を下げて凝集度を高めていきたい場合に使うものであるのに対して、Bridgeパターンは抽象概念という静的側面から見る必要があり、多対多の関係性で結合度を下げて凝集度を高めていきたい場合に使うものであるという話になりました。

モデリングの練習

本を読んでもモデリングができるようになっているかどうかよくわからないという話から、どのようにしたらモデリングの上達に繋がるんだろう?という話になりました。

色々と資格や問題集はあるのですが、それよりも日記をモデリングで書いたり、見たものを全てモデリングしてみたりする必要があるのではないか?という結論になりました。(オブジェクト指向カンファレンスでも、実務の複雑な概念をモデリングしてみることで鍛えたという方がいらっしゃったそうです)

ということで、毎日日常生活のなにかをモデリングをしてみようという話になり、今後は勉強会に参加しているメンバーでモデリングのお題を毎日出し合ってみることになりました!

応用問題2

バッグや洋服、建築物などは例の一つとして挙げられるのではないか?という話になりました。

また、結局凝集度が低いことと結合度が高いことが問題になるんだなあという意見も出ていました。

あなたの意見1

単一責任の原則を思い出すと、「shape」が「drawing」を持っているのはおかしいという発想になりそうだという話になりました。

会全体を通した感想

今日は章の内容に加えて、モデリングってどうやったら上達するの?という話で盛り上がりました。

結果的になんでもモデリングの企画?が立ち上がって、毎日モデリングしてみることになったので、今後が楽しみです。