■
オブジェクト指向設計実践ガイド
読んでる
オブジェクト指向設計実践ガイド ?Rubyでわかる 進化しつづける柔軟なアプリケーションの育て方
- 作者: Sandi Metz
- 出版社/メーカー: 技術評論社
- 発売日: 2016/09/02
- メディア: Kindle版
- この商品を含むブログ (1件) を見る
class MacBookPro attr_reader :maker def initialize @maker = 'Apple' end def put put maker end end class Programmer attr_reader :computer def initialize @computer = MacBookPro.new end def machine put "I use #{computer_maker} 's PC" end def computer_maker computer.maker end end
computer_makerメソッドは冗長な感じもするけど、もしこれをなくしてmachineメソッドの中からcomputer.makerを呼ぶとなると、依存が発生する。ProgrammerクラスというかmachineメソッドはMacBookProクラスのインスタンスがmakerというゲッターを持っていることを知っていなければならない。この例だと1ヶ所しかそのゲッターを呼ぶ場所はないからいいものの、複数箇所から呼んでいるとなると依存性は更に増す。ゲッターの名前を変えることになったら悲惨なことになる。だから冗長とも思えるcomputer_makerメソッドに全てを集める。
こういうのを見てみて思ったのは、クラス設計は対象クラスに徹底的に自分のやってることに責任を持たせなければいけないんだなということ。MacBookProインスタンスがいくらメソッド1つでちゃんとmaker名を返しますよと言っても、いくら簡単にMacBookProインスタンスが処理をこなそうとも、簡単に呼べようとも、直接叩くことはせずに自分のやり方を通して呼び出す。受注者が電話一本で午後イチには納品しますよ!なんていくら軽い事を言っても、いやこっちにはこっちの事情があんねんと言いながら発注元で稟議をかけて社内規定に則った上で発注する、みたいな。
筋トレ
100 JumpingJack 15 Burpee 15 PikePushup 20 JumpSquats 60s HighPlank 60s LowPlank