「不要なコード」をどのように定義しますか?
編集:
IMHO、アクティブな呼び出しメンバーが 0 のコード メンバー (再帰的にチェック) は不要なコードです。(関数、メソッド、プロパティ、変数はメンバーです)
「不要なコード」をどのように定義しますか?
IMHO、アクティブな呼び出しメンバーが 0 のコード メンバー (再帰的にチェック) は不要なコードです。(関数、メソッド、プロパティ、変数はメンバーです)
不要なコードの私の定義は次のとおりです。
そのようなコードを削除するかリファクタリングすることはできますが、そのままにしておくのは望ましくありません。
アクティブな通話は 0 で、近い将来に使用する可能性はありません。また、SVN(ソース管理)を使用しているため、後で必要になった場合に備えて、何もコメントアウトしないことを好みます。
あなたが他のスレッドで言ったように、どこでもまったく使用されていないコードはほとんど不要です。それを見つける方法については、たとえば、Java を使用している場合は FindBugs または CheckStyle をお勧めします。これらのツールは、関数がどこでも使用されているかどうかを確認し、使用されていない場合は未使用としてマークするためです。不要な重量を取り除くのに非常に便利です。
ざっと考えた結果、以下の3点に行き着きました。
他にもたくさんあると思いますが、それが不要なコードを定義する方法です。
Java では、メソッドまたはクラスを @Deprecated でマークします。
アクティブな呼び出しメンバーを持たないPRIVATEコード メンバー (再帰的にチェック)。そうしないと、コードがスコープ分析外で使用されていないかどうかわかりません。
すでに投稿されているものもありますが、ここに別のものがあります。ほとんど同じことを行う関数です。(小さな変数の変更のみであるため、関数全体がコピーペーストされ、その変数が変更されます)
通常、私は自分のコンパイラーにできるだけうるさくするように指示します。これにより、検査する必要があるものの 60% が選択されます。(VCS に確認した後) 数か月前の未使用の関数は、作成者が実際にいつ使用されるかを教えてくれない限り、通常は破棄されます。プロトタイプが欠けているものも即座に疑われます。
自動ハウス クリーニングを実装しようとすることは、ロシアン ルーレットを「安全に」プレイできることを保証する USB デバイスを作ろうとするようなものだと思います。
チェックするのが最も難しい部分は、ビルド システムに追加されたコンポーネントです。それらに気付く人はほとんどおらず、未使用のクラッジがコケを集めるために残されています。
それを超えて、私は通常、コードが欲しいです。その作成者に少しリファクタリングして、プロジェクトの残りの部分と同じスタイルにしてもらいたいだけです。
もう 1 つの便利なツールはdoxygenです。これは、ソース ツリー内の関係を (視覚的に) 確認するのに役立ちます。ただし、静的シンボル/オブジェクトを抽出しないように設定されている場合は、完全ではありません。