コピペの軍団
「似た機能だから、コピーして少し変えればいいや」。
それは「クローン軍団」を作ることと同じです。
全員が同じDNA(バグ)を持っています。一つを直しても、他の100人は病気のままです。
- 「検索機能」のコードが、商品一覧、顧客一覧、注文一覧の3箇所にコピペされている
- バグ修正を適用した後で、「あ、あっちの画面も直さなきゃ」と思い出すことが多い
- 変数名に `user2` や `process_new` のような適当な名前がついている
- 共通化しようと提案すると「動いているものは触るな」と怒られる
保守コストはコピーの数に比例して増大し、やがて破綻します。
01. 悪魔のショートカット
Ctrl+C, Ctrl+V。プログラマにとって最も甘美で、最も危険なショートカットです。
一見、生産性が上がったように見えます。午後5時に定時退社できるかもしれません。
しかし、そのコードに含まれていたバグも、一緒にコピーされました。
1ヶ月後、そのバグが見つかった時、あなたは全てのコピー先を探し出し、
一つ一つ手作業で修正しなければなりません。
その時初めて、定時退社の代償を支払うことになります。
違反した者は、
同じ修正を永遠に繰り返す罰を受ける。
02. 共通化の勇気
2回同じコードが出てきたら、それは偶然かもしれません。
しかし、3回目が出てきたら、それは「共通化(リファクタリング)」のサインです。
共通の関数やクラスに切り出し、それを呼び出すように書き換えましょう。
そうすれば、バグ修正は1箇所で済み、全員が恩恵を受けられます。
「少しの違い」を恐れず、引数(パラメータ)を使って柔軟に対応させるのがプロの技です。
03. テストがあれば怖くない
「共通化すると、他の場所に影響が出るのが怖い」という意見があります。
だからこそ「自動テスト」が必要です。
テストがあれば、共通化によって何かが壊れても、すぐに検知できます。
テストがないから、怖くてコピペに逃げる。
この悪循環を断ち切る勇気を持ちましょう。