人のコードを引き継ぐときに一番困るのは「使われていないコード」

プログラミングを生業としていると、人のコードを引き継いで開発するなんてこともままある訳ですが、そういうときに一番困るのは「使われていないコード」だなー、としみじみ感じます。

使われていないコードがもたらす弊害

特に動的言語で書かれたコードというのは前触れ無く呼び出される可能性があるため、本当に利用されていないのかどうなのか、きっちりと調べあげるのは困難なケースがあります。例えばrubyであれば、method_missingでキャッチしてsendで動的に処理先を振り分けるなんてことをしていると、単純にgrepして利用状況を見るだけでは不十分な場合があります。

そういう意味では「使われていないコード」というよりは、「使われているのか使われていないのかはっきり分からないコード」という方が適切な表現かも知れません。

そういった「はっきりと判断のつかないコード」がある状態だと何が問題なのかと言うと、

  • 不具合が発生したときに調査する対象に「はっきりと判断のつかないコード」も含まれるので、時間の無駄
  • 判断のつかないコードに対して無駄にテストを書いてしまうおそれもあり、時間の無駄
  • 本当に正確に判断をつけるためには、考えられる仕様を全て漏れなくテストに起こしてからコードを削っていくといったことをしなくてはいけないので、そもそもテストコードがない状態だと尋常じゃない時間を取らされる

といった無駄が発生するわけですね。つまり時間というコストの問題になる訳です。

しかし、そもそも元のコードを書いている人にとっては「これは使っていないコードだな」と判断できるコードな訳ですから、そもそも書いている人が適切にコードを整理していれば発生しない問題です。

  • フレームワークで自動生成されるファイル(びみょーにコードが書いてある)
  • 使わなくなったメソッド
  • 使わなくなったクラス
  • 使わなくなったビューのファイル
  • 使わなくなったCSS
  • 使わなくなった画像
  • などなど・・・

こういったものを「まぁ、いいか」と残しておくと、後々とんでもない負債になる訳ですね。

だから日頃からコードも、整理整頓を心がけたいものです。