2009-02-23 21 views
13

未使用コードを削除するためのベストプラクティスを知りたいのですが、個人的に私は現在使用されていないものを(単にコメントするだけではなく)削除するファンです。しかし、私はどれだけ遠くに行くのかは分かりません。未使用コードを削除するためのベストプラクティス

これを例として取り上げます(私は一般的な議論に興味がありますが)。私のプロジェクトでは、十数人程度のUserControlsがあります。後で缶詰になった機能のために、私はUserControlの1つにいくつかのメソッドとプロパティを実装しました。追加コードは機能に固有のものではなく、サポートする必要があります。それは後で役に立つ可能性があります。

  • 私たちは現時点でそれを使用していないのでコードを削除する必要がありますか?コードが少なくても読みやすいでしょうか?この問題は、将来の開発者がこの作業がすでに完了していることをどのように知っているのでしょうか?
  • それを保存しておく必要があるので、後で使用する必要がある場合は別の開発者が簡単に見つけることができます(誰でもこれを実行して削除したかどうかをソース管理で確認することはありません)。
  • 別のオプションがありますか?

これは、現在使用されていないUserControlsにも適用されます。私はそれらを取り除かなければならないのでしょうか?

編集:私はソースコントロールを使用していることは言うまでもありません。

答えて

34

最初に覚えておいていただきたいのは、すべてのコードがソース管理にあることです。

もちろん、廃止されたコードをコメントアウトするのではなく、削除する必要があります。少なくとも2つの理由から、長さのコメント付きコードブロックはちょうど危険です。

  1. コメントは他のコードでも維持されていると仮定する傾向があります。これは真実ではなく、バグ回帰のような問題につながる可能性があります。
  2. 長いブロックの途中で、コメントのついていない閉じ中括弧などを簡単に見逃すことがあります。

削除したコードは、本当に必要な場合でも引き続き利用できますが、作業コピーが煩雑になることはなくなりました。 の場合、実際にに古いコードの検出可能性が懸念される場合は、コードが削除されたことを示すコメントと、必要なリビジョン番号を残すことができます。 1行では、実際のコードブロックが使用していたコードよりもはるかに優れています。このコードが失効したこと、そして経過時間がはっきりしています。

+0

#3を追加することをお勧めします。未使用のコードは、よくテストされる可能性が低く、理論上はバグやセキュリティホールを導入する可能性があります。 – JohnFx

+0

「メンテナンス」に該当するので、理由#1とほぼ同じです。 –

+0

+1。また、コードのコメントアウトされたブロックが、スキャン中にあなたの注意を引くように見えます - あなたはデッドコードに気を取られたくありません。 –

5

ソース管理システムを使用している場合は、コードを削除することをお勧めします。

現在のコードを扱うときには、あなたが邪魔になることはありません。また、必要な場合はいつでもリポジトリにコードがあります。

+0

"ソース管理システムを使用していますので、コードを削除することをお勧めします。 - あなたのためにそれを修正しました。 – Instantsoup

+0

@Instantsoup:ありがとう – VBNight

4

コードには2つの状態があります。
アクティブ、機能、テストのいずれかで、ソースコントロールにある必要があります。
または、誰も使用したくないと思っている人はいないというだけで、時代遅れです。この場合は削除する必要があります。

「別の開発者が簡単に見つけることができるように」コードを消去しないと、コードをアクティブにしてコンパイルすることができます。ライブラリのサイズについて心配しないで、リンカは使用されていないものをすべて削除します。

あなたは、コードを消去していた、彼らは再び同じ過ちをしないように、それが削除された理由のために、良いコメントが所定の位置に置くことができるコードの他の人に警告したいしている場合。

1

私はまた、未使用のコードを削除するファンです。

私はコードが後で役に立つことができることを知っていれば、私は(我々はSubversionを使用している - ので、枝を作成することは非常に安価で簡単です)トランクからコードを削除する前にブランチを作成しました。これにより、必要に応じて、コードを一旦元に戻すことができます。

たとえば、リリースでは完了しない新しい機能がある場合、この手順ではトランクから部分機能を削除できますが、完了すると元に戻すことができますそれ。

2

私が推測することは、あなたがリポジトリにあるとコメントしても、誰かが戻ってそれをつかむのではなく、書き直されるということです。私はこれで多くの場所で働いてきたしないよう

ポリシー(一つだけ)「ノーコードが残した」が、私は、誰かがリポジトリに戻って、いくつかの古いコードを取得する見たことがありません。

しかし、小さなブロックを除いて、他の誰かのコードのコメントを解除したこともありませんでした。

あなたはそれを保存したい場合は、私は完全に実装およびテスト(テストでチェック!)が、新しいコードは、これまで必要とされている場合は変更される条件の下でそれを残すだろう。私はそれが必要だったときだけ「をオンにし、」不必要なコードを持っていた

、それは(それは常に行うことができないことを)本当にいい感じです。

完全に機能しテストされていない場合は、それをスナップして、次の人にそれを書き直させてください。

2

、その使用は、私はもうその機能を使用しない&を安定するまで、私は通常、しばらくの間、デッドコードをアイドル状態にしましょう。その時点で、私はそれを削除します。

1

ソースツリーに「廃止」領域があり、使用されなくなったものを移動します。それは通常チェックアウトされていないエリアのトランクから離れているので、誰もそれを見る必要はありません。

1

削除されたコードを、コードが削除された作業項目を指定するコメントに置き換えることをお勧めします。私の理論的根拠は、コードレビューのコメントを添付できる「フック」を提供するということです。私たちはTFSチェンジセットを使ってコードレビューVS Professionalをやっています。コードが100%削除されている場合、フックはありません。

関連する問題