朝練メモ
- 一時変数の削除
- totalAmount と freequentRenterPoints
- 問い合わせによる一時変数の置き換え (120)
- ループが増える
- sequence 図の書き方面白い
- ここではコード量が増加している
- ループが 3 倍
- プロファイリングしてみて性能計測
- 見た目 (あるいは感触) で判断しない
- リファクタリングのおかげでチューニングもし易く (問題箇所を特定し易く) なっている
- ボトルネックな位置の判断がし易い
- 計算メソドの切り出しで計算部分が再利用可能に
- まだメソド抽出の候補あり
- Template Method の形成 (345)
- 料金計算の条件文をポリモーフィズム置き換え
- 自分以外のオブジェクトの条件判定文の記述は間違い
- getCharge() は Movie に異動
- 貸しだし期間を引数で渡す必要がでてくる
- Rental オブジェクトの属性
- 何故 Movie で処理したか
- 想定されている変更が映画の分類の追加のみ
- 分類の変更による影響範囲を小さくすべき
- 料金計算は Movie 自身に
- Movie#getCharge() は Rental に異動
- Rental#getCharge() 定義して _movie.getCharge
- 当初、getCharge は Customer に書かれてた
- 同じ質問に対して異なる答えかた
- 継承でナニ
- これで switch を多態性として表現できる
- GoF の state パターン使う
- State/Strategy によるタイプコードの置き換え (227)
- タイプコードに依存した振舞いを State パターン使う形に
- メソドの異動 (142)
- switch 文を Price クラスに異動
- ポリモーフィズムによる条件記述の置き換え (255)
- switch 排除
- 自己カプセル化フィールド (171)
- getter/setter
- ポリモーフィズムによる条件記述の置き換え
- case のアクション部を取り出して云々
- これ、実際なナニを確認した方が良い
- しかも git で差分管理
- Movie のコンストラクタで PriceCode の setter をナニしてる所が起点
- 自分以外のオブジェクトの条件判定文の記述は間違い