オブジェクト指向設計実践ガイドを読んだ感想(第1章〜第3章)

・はじめに

オブジェクト指向という言葉をプログラミングの学習を始めたときから聞いたことはあったが、具体的にはその言葉を意味することや概念を全然知らなかった。オブジェクト指向に沿わないでもアプリケーションを作ることはできる。ただ、それは一人で作成して完結する場合のみだけ。実際の開発現場では複数人で開発しているし、新しい機能をつけたり、削除したりする。どうすれば改良しやすいコード設計にするかをこの本を通じて学習する。

 

Rubyはclassという設計図を元にオブジェクト(インスタンス)を生成する。その中にはメソッドという振る舞いと属性(変数)を定義する。設計は完璧なアプリケーションを作るために事前に必要な機能を考えることではなく、将来、アプリケーションに変更が生じた場合その変更を簡単にするためと、他の機能に影響を及ぼさないようするために大事なことなんだと思った。

 

最初に大事な概念として単一責任にすることがでてきた。単一責任は一つのクラスに一つの役割を果たすことで、変更が簡単で利用しやすくなるというもので、見極めるにはクラスに対してそのクラスが保持しているメソッドに質問して、その質問が意味の通っているものになっているかで見極めることができる。もう一つの方法として、1文でクラスの説明をすることで、説明にandやorが入っているようだと責任が2つあることになるということが読んでてなるほどなと思った。また、メソッドも単一責任を適用することで変更しやすくなる設計になるみたいで意識しようと思った。

 

依存関係(あるオブジェクトを変えたら、他のオブジェクトの内容も変えること。クラスの中身も同様)をなるべく少なくすることは難しいなと思った。今後どのようにアプリケーションが変わるかは想像つかないから、たくさん依存関係をつくってしまいそうだなと思ってしまった。引数の渡す順番を決めないのはRailsではキーとしてカラム名を書くからそこまで気にする必要はないけど、具体的な名前を書かないで抽象的なものを書くことや依存オブジェクトを注入する概念はなるほどなと思った。全部はおぼえられなかったので、自分より変わらないものに依存するを意識していく。

 

2020/3/21再読

改めて読んでみて、この本に出てくるメッセージはメソッドの呼び出しってことだけど、前回読んだ時そこを理解して読んでなかったような気がする。依存オブジェクトの注入はクラスやメソッド内部で他クラスのオブジェクトを明示的に作ったり、呼び出したりせずに、変数やその変数を定義しているメソッドを作り、クラス外部や他のメソッドでオブジェクトを作成して変数に代入して呼び出すようにすることで抽象化できることを認識できた。