到達不能コードの削除
原則的な静的型付け言語では、コードが実際に到達可能かどうかを常に知っておく必要があります。それを削除し、コンパイルします。エラーがなければ到達できません。
残念ながら、すべての言語が静的に型付けされているわけではなく、すべての静的に型付けされた言語が原則化されているわけでもありません。問題が発生する可能性のあるものには、(1)リフレクションと(2)原則のないオーバーロードが含まれます。
動的言語、または精査中のコードの一部が実行時にリフレクションを介してアクセスされる可能性がある十分に強力なリフレクションを持つ言語を使用する場合、コンパイラーに頼ることはできません。そのような言語には、Python、Ruby、またはJavaが含まれます。
原則的なオーバーロードのない言語を使用している場合、オーバーロードを削除するだけで、オーバーロード解決を別のオーバーロードにサイレントに切り替えることができます。そのような言語の中には、コードの使用に関連するコンパイル時の警告/エラーをプログラムできるものがあります。そうしないと、コンパイラに頼ることができません。このような言語には、Java(使用@Deprecated
)またはC ++(使用[[deprecated]]
または= delete
)が含まれます。
したがって、厳密な言語で作業することが非常に幸運でない限り(Rustが思い浮かびます)、コンパイラーを信頼することで、実際に足を踏み入れるかもしれません。また、残念なことにテストスイートは一般的に不完全であるため、これ以上の助けもありません。
次のセクションをキュー...
潜在的に未使用のコードを削除する
それどころか、コードが実際に参照されている、しかし、あなたは疑いの練習でそれを参照するコードの枝が取られることはありませんことを。
この場合、言語に関係なく、コードは明らかに到達可能であり、ランタイムインスツルメンテーションのみを使用できます。
過去に、私はこのようなコードを削除するのに3段階のアプローチをうまく使用しました:
- 実行されないことが疑われる各ブランチで、警告をログに記録します。
- 1サイクル後、特定のコードを入力すると例外をスロー/エラーを返します。
- 別のサイクルの後、コードを削除します。
サイクルとは何ですか?コードの使用サイクルです。たとえば、金融アプリケーションの場合、短い月間サイクル(月末に給与が支払われる)と長い年次サイクルが予想されます。この場合、年末の在庫に対して警告が発せられないことを確認するために少なくとも1年待つ必要があります。
うまくいけば、ほとんどのアプリケーションのサイクルが短くなります。
私は、次のステップに進むべき時期について助言する、日付とともにTODOコメントを書くことをお勧めします。カレンダーのリマインダー。