レガシーリファクタはRamboモードから始めろ
IDEより先にバンダナ
ソ連トラック並みに積み上がったレガシーコードに遭遇。全部理解してから触ろう?それ、悪手。まずRamboスイッチを入れろ。
- 転がっているものは捨てる:死んだ機能、誰も読まないフラグ、放置されたライブラリ。使われていないならただの重り。
- 怪しいヘルパーを消す:2018年の手動テストで一度だけ動いたutil?さよなら。
- ゾンビルートを切断:メトリクスもログもないエンドポイントは不審。止めて、誰が騒ぐか見よう。
最悪でもGitが拾い直してくれる。発掘作業は後回し。
まずは間引き、理解は後
スコープが小さいほど脳みそが呼吸できる。範囲を絞れば本当に使われているものが即わかる。
- 呼び出しをたどる:
rgやdepcruiseですぐ依存が生きているか判別。ヒットゼロ?アンインストール。 - イベントとジョブを確認:誰も消費しないキューや沈黙したcronは警報。幽霊をどうリファクタする?
- 実行時を観察:削ったモジュールなしでアプリを動かす。本当のエラーだけが見える。
化石ライブラリ:残すか書き直すか
1関数のための化石依存?Dateを整形するだけでmoment.jsを2025年まで背負う契約じゃない。自問せよ。
- **何回呼ばれている?**3箇所?10行で書き直して依存を一つ減らせ。
- **アップグレードコストは?**6回メジャー移行を強要するなら、置き換えた方が速い。
- **ネイティブ代替は?**たいていある。標準APIで8割賄えるし、残りは素直に書けばいい。
切れば切るほど残りが読みやすくなる。本当に重要な部品を消しても、Gitが30秒以内に蘇らせる。
まずRambo、次にアーキテクト
この「力技」は最終リファクタではない。地ならしだ。
- スコープが明確になる:脂肪が減り、核が見える。
- リスクが減る:依存もバグ経路も少なくなる。
- 次の工程が速くなる:本番の作り直し(テスト、設計、分離)が現実的になる。
だから赤いハチマキを締めて一気に掃除しろ。その後で図面を広げ、アーキテクチャを描き、大人としてコードを書く。思い出はGitに任せて、精神は自分で守れ。