朝練メモ

  • リファクタリングによって設計が唯一無二の完璧な解である必要はなくなる
    • 設計の簡素化
  • 変更リスクに今までと違うやり方で対処できるようになる
  • リファクタリングは柔軟性を損なわずに設計をよりシンプルにする作用がある
  • 推測はやめて実際に計測すること
  • リファクタリングの利点
    • 設計が明確なため、より速く機能追加できる
    • 優れた設計はパフォーマンス解析の際、より細かな単位へ集中することが可能になる

不吉な匂い

  • 一等賞は「重複したコード」
  • ここで出てくるパターンは以下
    • メソッドの抽出
    • メソッドの引き上げ
    • Template Method の形成
    • アルゴリズムの取り替え
    • クラスの抽出
    • 問い合わせによる一時変数の置き換え
    • 引数オフジェクトの導入
    • オブジェクトそのものの受け渡し
    • メソッドオブジェクトによるメソッドの置き換え
    • 条件記述の分解

不吉な匂いの項目を以下に。

  • クラスのインターフェース不一致
  • コメント
  • データクラス
  • データの群れ
  • 変更の発散
  • 重複したコード
  • 属性、操作の横恋慕
  • 不適切な関係
  • 未熟なクラスライブラリ
  • 巨大なクラス
  • 怠け者クラス
  • 長すぎるメソッド
  • 多すぎる引数
  • メッセージの連鎖
  • 仲介人
  • パラレル継承
  • 基本データ型への執着
  • 相続拒否
  • 変更の分散
  • 疑わしき一般化
  • スイッチ文
  • 一時的属性