ルール8実行されていないコードは動作しない

 どんな大きなコードベースでも、それなりの期間存在すればなおさら、その中に行き止まり(dead end)がある。行き止まりというのは、何行かのコードや、関数や、下位システムで、以後実行されることのない部分だ。そういう部分が追加されたのにはおそらく理由があり、かつてのある時点では、そういうコード行も呼び出されていたのだ。でも状況は変化し、どこかの時点で、呼び出していたコードは全て、その必要がなくなってしまった。そして呼び出しは来なくなる。コードは孤立してしまったのだ。

 時には、プログラム内の他のどの場所からも呼び出されない関数みたいに、孤立状態であることがはっきりしている場合もある。使っている言語とツールチェイン1がそれなりにしっかりしているなら、そういう決まった種類のデッドコード(dead code)に関する警告だって表示されるかもしれない。

1 訳注:ソフトウェア開発向けに組み合わせて用いる複数のツール群。

 もっと一般的なのは、孤立状態にあるコードがそれほどはっきりしていない場合だ。はっきりしてないといっても、基底クラスで定義された仮想(virtual)メソッドが、ある派生クラス向けには決して呼び出されないとか、機械的な構造上の問題の可能性はあるかもしれない。でも静的解析では、そういう類のことは検出できない2。あるいは、関数内の、ある特殊なエッジケース3を処理するために書かれたコードがあり、そういう場面では特殊な条件分岐処理が必要になっている。ある時点で状況が変わり、そういう場面は以後発生しようがなくなる。そのエッジケースのコードはそこに残ったままだが、呼び出されることは二度とない。

2 訳注:C++の仮想関数は、派生クラスで再定義されるメンバー関数(メソッド)で、基底クラスで ...

Get ルールズ・オブ・プログラミング ―より良いコードを書くための21のルール now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.