コードはすでに書かれていて、努力が費やされている
それも不要です。それを何にも使用しないと、それが何をするか、どれだけの労力が費やされたかにかかわらず、(定義上)役に立たなくなります。
コードは、合成環境と実際の環境でテストできます
それが役に立たない場合は、テストを行っても役に立たない。コードが役に立たない場合、そのテストも役に立たないはずです(コメント化されたコードをそのままにしておくと、あいまいさが生じます-テストを続けますか?コメントされたコードのクライアントコードがある場合、クライアントコードもコメントしますか? )
うまく整理されていれば(グループ化、個別パッケージ、疎結合など)、全体的なコード分析やリファクタリングを妨げることはありません
そうではありません。すべてのツール(ソース管理、静的分析、ドキュメント抽出、コンパイラーなど)は、より多くのデータを処理する必要があるため、実行速度が遅くなります(そのデータの大部分または小部分はノイズです)。
コードがそうでない場合整理されていと、静的分析やリファクタリングなどが混乱します。
ツールの入力にノイズを導入し、ツールがそれを正しく処理することを期待しています。
静的分析ツールがコメント/コード比率を計算する場合はどうなりますか?昨日まで(またはコードがコメントされたとき)まで関連性のあるもので、それを台無しにしました。
すべての中で最も重要なのは、コメント付きのコードブロックは、メンテナンスとさらなる開発のためのコードの理解に遅延をもたらし、そのような遅延はほとんど常にコストがかかります。自問してみてください。関数の実装を理解する必要がある場合、何を見なければなりませんか?2行の明確なコード、または2行のコードともう実際の26のコメント?
コードは将来使用される可能性があります
もしそうなら、あなたはチームの選択したSCMにそれを見つけるでしょう。
有能なSCMを使用して、(ソースを散らかすのではなく)デッドコードを維持することに依存している場合、誰がそのコードを削除したか(作成者をコミット)だけでなく、その理由(コミットメッセージ)やその他の理由を確認できます。変更が加えられました(そのコミットの残りの差分)。
削除すると、作者は不快に感じるかもしれません
そう?
あなたは(私が思うに)あなたが方法を知っている最高のソフトウェアを作るために支払われる開発者のチーム全体であり、「Xの感情を損なうことなく方法を知っている最高のソフトウェア」ではありません。
これはプログラミングの一部であり、書かれたほとんどのコードは最終的に破棄されます。たとえば、Joel Spolsky氏は、ある時点で、自社の場合、記述されたコードの約2%が本番環境にあると述べています。
コードベースの品質よりも開発者のエゴを優先する場合、製品の品質を犠牲にします。仲間の開発者の未熟さを維持しますか?同僚の非現実的な期待を守りますか?
編集:私はソースにコメントアウトされたコードを残す正当な理由を1つ見ました、そしてそれは非常に特定のケースです:コードが奇妙な/直感的でない形式で書かれていて、それを書き直すきれいな方法ではない場合本当に微妙な理由で働きます。これは、問題を修正するために繰り返し試行された後で、試行が同じ欠陥を再導入するたびにのみ適用されます。そのような場合は、コメント付きの直感的なコードをコメントとして追加し、機能しない理由を説明する必要があります(将来の開発者が同じ変更を再度試みることはありません)。
// note by <author>: the X parameter here should normally
// be a reference:
// void teleport(dinosaur& X);
// but that would require that we raise another dinosaur and
// kill it every twelve hours
// as such, the parameter is passed by value
void teleport(dinosaur X);