プログラミングを生業としていると、人のコードを引き継いで開発するなんてこともままある訳ですが、そういうときに一番困るのは「使われていないコード」だなー、としみじみ感じます。
使われていないコードがもたらす弊害
特に動的言語で書かれたコードというのは前触れ無く呼び出される可能性があるため、本当に利用されていないのかどうなのか、きっちりと調べあげるのは困難なケースがあります。例えばrubyであれば、method_missingでキャッチしてsendで動的に処理先を振り分けるなんてことをしていると、単純にgrepして利用状況を見るだけでは不十分な場合があります。
そういう意味では「使われていないコード」というよりは、「使われているのか使われていないのかはっきり分からないコード」という方が適切な表現かも知れません。
そういった「はっきりと判断のつかないコード」がある状態だと何が問題なのかと言うと、
- 不具合が発生したときに調査する対象に「はっきりと判断のつかないコード」も含まれるので、時間の無駄
- 判断のつかないコードに対して無駄にテストを書いてしまうおそれもあり、時間の無駄
- 本当に正確に判断をつけるためには、考えられる仕様を全て漏れなくテストに起こしてからコードを削っていくといったことをしなくてはいけないので、そもそもテストコードがない状態だと尋常じゃない時間を取らされる
といった無駄が発生するわけですね。つまり時間というコストの問題になる訳です。
しかし、そもそも元のコードを書いている人にとっては「これは使っていないコードだな」と判断できるコードな訳ですから、そもそも書いている人が適切にコードを整理していれば発生しない問題です。
- フレームワークで自動生成されるファイル(びみょーにコードが書いてある)
- 使わなくなったメソッド
- 使わなくなったクラス
- 使わなくなったビューのファイル
- 使わなくなったCSS
- 使わなくなった画像
- などなど・・・
こういったものを「まぁ、いいか」と残しておくと、後々とんでもない負債になる訳ですね。
だから日頃からコードも、整理整頓を心がけたいものです。