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