朝練メモ

今日から 2 章に突入。

  • リファクタリングという言葉には文脈によって二つの定義がある
    • 名詞:外部から見たときの振舞いを保ちつつ、理解や修正が簡単になるように、ソフトウェアの内部構造を変化させること
    • 動詞:外部から見た振舞いの変更なしにソフトウェアを再構築すること
  • リファクタリングカタログのうち、名詞の例としては「メソドの抽出」や「フィールドの引き上げ」
  • リファクタリングの定義として強調しておきたい
    • ソフトウェアを理解しやすく、変更を容易にするために行なう
    • 外部的振舞いを保ったまま変更を施す
  • リファクタリングする理由
    • ソフトウェア設計の向上
    • ソフトウエェアを理解しやすくする
    • バグを見つけだす
      • 理解が容易になればバグを見つけやすくなる
    • より速くプログラミングできる
      • すぐれた設計はソフトウェア開発のスピードを一定に保つのに非常に役立つ
      • rapid な開発にはすぐれた設計が不可欠
  • いつするか
  • 3 度目の
    • 最初は単純に作業
    • 2 度目は重複や無駄を意識しつつスルー
    • 3 度目の気づきでリファクタリング
  • コードレビュ時のリファクタリング
    • 他人の書いたコードをレビュするのに役立つ
    • これを突き詰めたら XP になる説
  • リファクタリングはなぜ有効か
    • 何がプログラムを難しくしているの
      • 読みにくい
      • ロジック重複
      • 機能追加に伴い、既存のコード修正が必要になるものは変更しにくい
      • 複雑な条件分岐が多いプログラム
    • 逆にしちゃえば良い的