Code ist bereits geschrieben und es werden Anstrengungen unternommen
Es ist auch unnötig. Wenn Sie es für nichts verwenden, ist es (per Definition) nutzlos, unabhängig davon, was es tut oder wie viel Aufwand dafür aufgewendet wurde.
Code kann in einer syntetischen und realen Umgebung getestet werden
Wenn es nutzlos ist, ist es immer noch nutzlos, selbst wenn Sie Tests haben. Wenn der Code nutzlos ist, sollten auch die Tests für ihn nutzlos sein (wenn Sie also den kommentierten Code dort belassen, entsteht Mehrdeutigkeit - behalten Sie die Tests bei? Wenn Sie den Clientcode des kommentierten Codes hatten, kommentieren Sie auch den Clientcode? )
Wenn es gut organisiert ist (gruppiert, separates Paket, lose gekoppelt usw.), stört es Sie nicht bei der gesamten Code-Analyse oder beim Refactoring
Nicht so. Alle Ihre Tools (Quellcodeverwaltung, statische Analyse, Dokumentationsextraktor, Compiler usw.) werden langsamer ausgeführt, da sie mehr Daten verarbeiten müssen (und ein größerer oder kleinerer Teil dieser Daten Rauschen ist).
Wenn der Code andererseits nicht gut organisiert ist, werden statische Analysen, Refactoring und andere Probleme durcheinander gebracht.
Sie bringen Rauschen in die Eingabe Ihrer Werkzeuge ein und hoffen, dass sie damit richtig umgehen.
Was ist, wenn Ihr statisches Analysetool ein Verhältnis von Kommentaren zu Code berechnet? Sie haben es nur durcheinander gebracht, mit etwas, das bis gestern relevant war (oder wann immer der Code kommentiert wurde).
Am relevantesten ist jedoch, dass kommentierte Codeblöcke zu Verzögerungen beim Verständnis des Codes für Wartung und Weiterentwicklung führen und solche Verzögerungen fast immer viel kosten. Fragen Sie sich Folgendes: Wenn Sie die Implementierung einer Funktion verstehen müssen, worauf müssen Sie lieber achten? zwei Zeilen klaren Codes oder zwei Zeilen Code und weitere 26 Kommentare, die nicht mehr aktuell sind?
Code kann in Zukunft verwendet werden
Wenn ja, finden Sie es im SCM Ihrer Wahl.
Wenn Sie ein kompetentes SCM verwenden und sich darauf verlassen, dass der tote Code erhalten bleibt (anstatt die Quelle zu überladen), sollten Sie nicht nur sehen, wer diesen Code gelöscht hat (Autor festschreiben), sondern aus welchem Grund (Nachricht festschreiben) und aus welchem anderen Grund Änderungen wurden zusammen mit ihm vorgenommen (der Rest der Unterschiede für dieses Commit).
Nach dem Löschen kann sich der Autor unwohl fühlen
So?
Sie sind (ich nehme an) ein ganzes Entwicklerteam, das dafür bezahlt wird, die beste Software zu entwickeln, die Sie können, und nicht "die beste Software, die Sie können, ohne die Gefühle von X zu verletzen".
Es ist Teil der Programmierung, dass der meiste geschriebene Code letztendlich verworfen wird. Zum Beispiel sagte Joel Spolsky irgendwann, dass für sein Unternehmen ungefähr 2% des geschriebenen Codes produziert werden.
Wenn Sie dem Ego der Entwickler Vorrang vor der Qualität der Codebasis einräumen, werden Sie die Qualität Ihres Produkts opfern, für ... was genau? Die Unreife Ihrer Entwicklerkollegen bewahren? Die unrealistischen Erwartungen Ihrer Kollegen schützen?
Bearbeiten: Ich habe einen triftigen Grund gesehen, auskommentierten Code in der Quelle zu belassen, und es ist ein sehr spezifischer Fall: Wenn der Code in einer seltsamen / nicht intuitiven Form geschrieben ist und die saubere Art des Umschreibens dies nicht tut arbeiten aus einem wirklich subtilen Grund. Dies sollte auch erst angewendet werden, nachdem wiederholt versucht wurde, das Problem zu beheben, und jedes Mal, wenn der Versuch denselben Fehler erneut eingeführt hat. In einem solchen Fall sollten Sie den kommentierten intuitiven Code als Kommentar hinzufügen und erklären, warum er nicht funktioniert (damit zukünftige Entwickler die gleiche Änderung nicht erneut versuchen):
// 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);