Tags
221 ページ目
Refactoring
コピペした手順の順番が入れ替わり、古い値で判定していた。骨格を1か所に固定する【Template Method】
通知先を1つ増やすたび、検知コードに呼び出しを書き足している。通知を登録制にする【Observer】
「元に戻す」を推定値の逆操作で書いたら、元の値に戻らない。変更前の状態を保存する【Memento】
bool 3つで「休眠中なのに開花中」が記録される。状態を enum 1つにする【State】
単体と集まりで関数が別々で、中間の単位を足せない。同じトレイトで再帰的に扱う【Composite】
新しい品種を1つ登録したら、別の品種の表示が壊れた。生成を品種ごとに分ける【Factory Method】
「実行」と「記録」が別の関数で、片方の呼び忘れが防げない。Drop で必ず記録させる【RAII】
品種を足すたび match が伸び続ける。判定を品種ごとの実装に任せる【Strategy】
機能を1つ足すたび構造体が倍に増える。組み合わせを外から包んで作る【Decorator】
同じ型の引数を並べ替えてもコンパイルが通り、値が入れ違う。名前を付けて渡す【Builder】
箱の中に箱がある船倉の重さを、型判定の再帰で数え落とす。単品も集合も同じ口で答えさせる【Composite】
座標も燃料も生の Float で持ち回り、単位や座標系の取り違えが静かに通る。値を不変の小さなクラスでくるむ【Value Object】
欠測センサーの nil チェックが6か所に並び、1か所忘れると NoMethodError になる。「何もしない」実装で分岐を消す【Null Object】
手順書は「点検を1回呼ぶ」の1行なのに、コードは11手続きが7か所に散らばる。段取りを1つの窓口に集める【Facade】
操作を打ち間違えても、実行済みの操作を戻す手段がコードにない。動作をオブジェクトにして、戻し方も持たせる【Command】
1
2
3
…
15