【りふぁくたりんぐ】

リファクタリング とは?

💡 動作はそのまま、コードを「お掃除」する
📌 このページのポイント
リファクタリングの概念 Before(リファクタリング前) 長い関数(200行) 重複コード多数 変数名が不明瞭 ネストが深い 動作は正しいが読みにくい 改善 After(リファクタリング後) 小さな関数に分割 共通処理を抽出 意味のある命名 フラットな構造 動作は同じで読みやすい 外部から見た振る舞いを変えずに内部構造を改善する
リファクタリングのイメージ
ひよこ ひよこ

なんでリファクタリングするの?

ペンギン先生 ペンギン先生

コードは時間が経つと「技術的負債」が溜まるんだ。急いで書いたコード、理解しにくい変数名、コピペの重複…。放置すると新機能の追加に時間がかかり、バグも増える。定期的にリファクタリングすることで、コードの品質を維持して開発速度を保てるよ

ひよこ ひよこ

いつやるべき?

ペンギン先生 ペンギン先生

「Boy Scout Rule(来たときより美しく)」が理想。機能追加やバグ修正のついでに、触ったコードを少し綺麗にする。大規模リファクタリングはリスクが高いから、小さく頻繁にやるのがベスト。「リファクタリング専用のスプリント」を設けるチームもあるよ

ひよこ ひよこ

テストなしでリファクタリングは危険?

ペンギン先生 ペンギン先生

非常に危険だよ。リファクタリングの定義は「動作を変えない」だけど、テストがないと「動作が変わっていないこと」を確認できない。まずテストを書いてからリファクタリングする。テストがないレガシーコードには「特性テスト(現在の動作をそのまま記録するテスト)」を先に書くアプローチがあるよ

ひよこ ひよこ

代表的なリファクタリング技法は?

ペンギン先生 ペンギン先生

①Extract Method(長い関数を小さな関数に分割)、②Rename(分かりやすい名前に変更)、③Move Method(適切なクラスに移動)、④Replace Conditional with Polymorphism(条件分岐ポリモーフィズムに置換)。Martin Fowlerの「リファクタリング」は名著だからぜひ読んでみてね

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「リファクタリング」って出てきたら「動作を変えずにコードを改善すること」と思えればだいたいOK!
📖 おまけ:英語の意味
「Refactoring」 = リファクタリング
💬 Re(再び)Factor(因数分解)ing。コードを「因数分解」して整理するイメージだよ
← 用語集にもどる