Könnte jemand die Vorteile des Löschens (oder Beibehaltens) von nicht verwendetem Code erklären?


102

Ich habe oft gehört, dass nicht verwendeter Code aus dem Projekt gelöscht werden muss. Es ist mir jedoch nicht klar "warum?".

Meine Punkte für das Nichtlöschen sind:

  • Code ist bereits geschrieben und es werden Anstrengungen unternommen
  • Code kann in einer syntetischen und realen Umgebung getestet werden
  • Wenn es gut organisiert ist (gruppiert, separates Paket, lose gekoppelt usw.), stört es Sie nicht bei der gesamten Code-Analyse oder beim Refactoring
  • Code kann in Zukunft verwendet werden
  • Nach dem Löschen kann sich der Autor unwohl fühlen

Könnte jemand die Vorteile des Löschens (oder Beibehaltens) von nicht verwendetem Code erklären?


16
Auskommentierter Code sollte auch nicht in eine Codebasis gehören.
Leppie

27
Weil wir die Versionskontrolle haben. Wenn wir jemals auf alte Versionen des Codes verweisen müssen, können wir einfach den Verlauf überprüfen.
Armandino

1
Übrigens kann es schwierig sein, sich auf die Versionskontrolle zu beziehen, wenn das Projekt groß ist und einige Dateien> 200 Revisionen haben
Alex Stamper

22
@AlexStamper: Wenn Sie mit Ihren Tools nicht einfach frühere Revisionen Ihres Codes anzeigen können, besteht die Lösung darin, bessere Tools zu erhalten und Ihrem Quellcode kein Rauschen hinzuzufügen.
utnapistim

1
Software Engineering hat eine sehr ähnliche Frage .
Davidvandebunte

Antworten:


180

Hier sind einige Gründe, warum nicht verwendeter Code entfernt werden sollte:

  • Jeder, der neu an einem Projekt arbeitet, muss nicht nur den Arbeitscode verstehen, sondern auch nicht verwendetes Material. Dies ist Zeitverschwendung und schafft Verwirrung.

  • Es besteht die Gefahr, dass irgendwann jemand eine Änderung vornimmt, die versehentlich den "ruhenden" Code betrifft und Fehler verursachen kann. Ich weiß, dass es bei Projekten passiert ist, an denen ich gearbeitet habe.

  • Die Pflege eines Codes ist ein Verwaltungsaufwand. Durch die Beibehaltung des alten redundanten Codes wird diese Belastung erhöht. Das Zusammenführen von Änderungen im Hauptzweig wird beispielsweise schwieriger, da mehr Code verarbeitet werden muss und mehr Möglichkeiten bestehen, Fehler zu machen.

  • Was im Laufe der Zeit passiert, ist, dass immer mehr alter unbenutzter Code zur Codebasis hinzugefügt wird. Dies erhöht die Verwirrung, das potenzielle Missverständnis und den Verwaltungsaufwand.

  • Die Wahrscheinlichkeit, dass der nicht verwendete Code jemals wieder verwendet wird, ist sehr unwahrscheinlich. Mit der Zeit nimmt diese Möglichkeit der Wiederverwendung ab. Wenn Code entfernt werden soll und als wichtig genug angesehen wird, kann der Code verzweigt und dokumentiert werden.

  • Alle persönlichen Gefühle, die ein Codierer in Bezug auf Code hat, an dem er möglicherweise hart gearbeitet hat, sind verständlich. Aber um professionell zu sein, müssen diese Gedanken zum Wohle der Allgemeinheit beiseite gelegt werden. Zeit steht für niemanden und es gibt keinen Platz für die Aufbewahrung von historischem Code in einer funktionierenden Codebasis.


26
Ich hatte vor kurzem Angst vor dem lebenden Mist, weil ich mir nicht verwendeten Code angesehen habe (und nicht bemerkt habe, dass er nicht verwendet wurde). Nicht verwendeter Code sollte aus der Existenz entfernt werden!
Leppie

1
gute punkte, danke. Meine Kollegen gaben auch einige von ihnen an
Alex Stamper

Hervorragende Antwort. Ich möchte in meiner Masterarbeit auf solche Argumente verweisen, kann aber anscheinend keine geeignete Quelle finden (Buch, Papier usw.). Hast du irgendwelche Hinweise?
Jonas Winkler

3
Ich würde mich sehr für Ihre Gründe für die Abwärtsabstimmung interessieren.
Verdächtiger

1
Noch ein Punkt: Wenn alter Code wieder benötigt wird, verwenden die meisten Projekte heutzutage ein SCM und Code kann wieder herausgeholt werden (manchmal mit etwas Suchen, wahr, aber wie in der Antwort klar herausgestellt, ist die Wahrscheinlichkeit, dass nicht verwendeter Code vorhanden ist benötigt wird mit zunehmendem Alter wieder abgenommen).
Kotelett

31

@suspectus hat die Gründe für das Löschen von Code hervorragend dargestellt. Ich möchte Ihre individuellen Aufzählungszeichen für die Aufbewahrung von Code ansprechen.

  • Code ist bereits geschrieben und es werden Anstrengungen unternommen

Wenn der bereits geschriebene Code jedoch nicht verwendet wird, sind dies nur Kosten ohne (zukünftigen) Wert. Es ist eine vergebliche Anstrengung, und die Erhaltung des nicht verwendeten Produkts dieser Bemühungen bestätigt diese Bemühungen nicht. Wir behalten Code bei, weil er jetzt nützlich ist und nicht als eine Art Denkmal für die Bemühungen der Autoren.

  • Code kann in einer syntetischen und realen Umgebung getestet werden

Es tut mir leid, ich weiß nicht, was du damit meinst.

  • Wenn es gut organisiert ist (gruppiert, separates Paket, lose gekoppelt usw.), stört es Sie nicht bei der gesamten Code-Analyse oder beim Refactoring

Wenn es in der Codebasis vorhanden ist, egal wie gut es organisiert ist, trägt es zur Wartungs- und Verständnislast bei. Es kann zwar so organisiert werden, dass es weniger belastet wird, aber wenn es weg ist, ist es überhaupt keine Belastung.

  • Code kann in Zukunft verwendet werden

In der Agile Schule sagen wir YAGNI : Du wirst es nicht brauchen. Ja, vielleicht haben Sie in Zukunft eine Verwendung dafür, aber wir können heute nicht genug über die Bedürfnisse von morgen wissen, um dies mit jeder Art von Zuverlässigkeit vorhersagen zu können. Anders zu denken ist Arroganz, die zur Hybris tendiert. Was wir über morgen wissen können , ist: Wir möchten, dass unsere Codebasis einfach zu ändern ist und nicht verwendeter Code diese Eigenschaft beeinträchtigt.

  • Nach dem Löschen kann sich der Autor unwohl fühlen

Der Autor muss darüber hinwegkommen. Wir haben alle Dinge geschrieben, die sich als nicht nützlich erwiesen haben - weitaus besser, um auf einen Code-Code verweisen zu können, der alle verwendet wird (weil die nicht verwendete Cruft gelöscht wurde), als auf einen Code-Body, von dem Sie sagen können ein paar Methoden, "und die ist tatsächlich in Gebrauch!"


17

Ist es nicht schwierig genug, Code aufzunehmen und die Absicht herauszufinden, aber jetzt müssen Sie herausfinden, welche Teile nicht verwendet werden?


14

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);

10

Toter Code verschmutzt Ihren Code

Toter Code verringert die Verständlichkeit und Lesbarkeit.

Die besten Codes werden immer wiederverwendet, und wenn Sie tote Codes haben, wird die Wiederverwendbarkeit verringert

Wir basieren auf einem modularen Codierungsansatz, bei dem wir Codes für die Interaktion mit unseren Programmierkollegen entwerfen, nicht für eine Maschine. Wir sollten die meiste Energie einsetzen, um es ihm / ihr zu erleichtern, unseren Code zu verstehen. Die Maschine wird sowieso in Ordnung sein.

Toter oder kommentierter Code ist wie falsche Wegweiser, die nur Menschen verwirren. Vermeiden Sie ihn also um jeden Preis.


10
  • Angst . Dadurch macht sich das Team mehr Sorgen und produziert weniger. Die Menge an Angst steigt exponentiell an, wenn mehr toter Code eingeführt wird. "Wir wissen nicht, ob dieses Bit verwendet wird, also wagen wir es nicht, es zu entfernen oder zu berühren."
  • Umfassende Veränderungen . Wenn etwas, das überall im System geändert werden muss, auch im toten Code vorhanden ist, ändern Sie es? Es ist sehr schwer zu wissen, ob es definitiv nicht irgendwo verwendet wird, daher ist es immer ein Risiko. Und selbst wenn es nichts kaputt machen würde, würde der tote Code überhaupt funktionieren, wenn er nach dieser Änderung wieder verwendet würde?

    Wenn es um eine umfassende Änderung geht, müssen die Entwickler auch jeden Ort überprüfen, der den Code enthält, und im Fall von totem Code ist dieser redundant. Und das Überprüfen dauert länger, wenn der Code tot ist, da es schwierig ist zu überprüfen, ob er nirgendwo verwendet wird.

  • Mentale Belastung . Jedes Mal, wenn Sie darüber nachdenken müssen, ob etwas verwendet wird oder ob Sie etwas mit dem toten Code tun sollten, wird ein Teil Ihrer Gehirnleistung benötigt.
  • Wilde Gänsejagden . "Ich brauche ein Beispiel für die Verwendung von Foobar. Oh, es befindet sich an diesen Stellen in der Codebasis. Ich werde den ersten Treffer überprüfen und herausfinden, wo sich dies in der Benutzeroberfläche befindet. Hmm ... Ich kann es nirgendwo finden."
  • Überhöhte Berichte (z. B. wie viele Codezeilen, Klassen, Routinen, Änderungen). Verzerrt die Sichtbarkeit des Projekts und Entscheidungen darüber, an welchen Teilen der Codebasis gearbeitet werden soll, sowie Schätzungen zukünftiger Projekte.
  • Geschwächtes Vertrauen in die Codebasis . Dies kann dazu führen, dass mehr Zeit für redundante Aufgaben aufgewendet wird, und die Verwendung der Codebasis wird unterbrochen. Entwickler müssen möglicherweise äußerst sorgfältig prüfen, ob alles, was sie verwenden, so funktioniert, wie sie es für richtig halten.

Es ist äußerst wertvoll, wenn Sie wissen, dass ein Teil der Codebasis nicht verwendet wird, da Sie ihn dann entfernen können. Wenn Sie es bleiben lassen, kann es in Zukunft schwierig oder fast unmöglich sein, sicher zu sein, dass es tatsächlich nicht verwendet wird. Zum Beispiel einige Dinge, die Code auf überraschende Weise verwenden: Reflexion, dynamisches Aufrufen von Routinen, die aus Zeichenfolgen verkettet sind, Auswertung, Framework-Magie .

Wenn jedoch eine hohe Wahrscheinlichkeit besteht, dass Code in Zukunft verwendet wird, ist es einfacher, ihn hinzuzufügen, wenn er sich direkt neben dem anderen Code befindet, anstatt im Versionskontrollsystem. Möglicherweise erinnern Sie sich nach einer Weile nicht mehr an Wörter, die der Code enthielt, sodass es sehr schwierig sein kann, den Code aus dem Darm des VCS zu finden. Aber ich würde toten Code nur selten existieren lassen und selbst dann würde ich den Code auskommentieren.


4
  • Nicht verwendeter Code ist ein größerer Suchraum, den Sie sowohl durchlesen als auch alles andere, was Ihren Code im Allgemeinen scannt. Zum Beispiel ein Compiler, eine IDE, das Suchen in einer Datei, das Debuggen, eine statische Analyse, mehr zu überprüfen, Dateien aufzunehmen, aus VCS auszuchecken usw. Dies verlangsamt diese Prozesse und fügt erhebliches Rauschen hinzu.
  • Nicht verwendeter Code ist nicht immer toter Code. Es kann unter bestimmten Umständen ausgeführt werden. Dies kann nicht nur einen Vektor für Fehler und Leistungsprobleme bieten, sondern auch ein Sicherheitsrisiko darstellen. In Bezug auf die Leistung kann sich dies auf unerwartete Weise äußern, z. B. bei größeren Downloads.
  • Nicht verwendeter Code erzeugt nicht verwendeten Code. Wenn Sie einen Funktionsaufruf löschen und dann nach Verwendungen dieser Funktion suchen, um festzustellen, ob sie noch benötigt wird, sehen Sie möglicherweise eine Übereinstimmung mit dem zuvor nicht verwendeten Code und gehen davon aus, dass Sie ihn behalten können. Je mehr unbenutzter Code Sie haben, desto mehr Sprünge müssen Sie feststellen, ob der Code nicht verwendet wird.
  • Nicht verwendeter Code muss immer noch häufig gepflegt werden. Nehmen wir an, A und B hängen von C ab. Von diesen wird B nicht verwendet. Sie ändern C und dann wird B nicht kompiliert, da Sie ein Mitglied aus einer Struktur in C entfernt haben, die B benötigt. Jetzt müssen Sie B reparieren oder es aktiv aus der Kompilierung entfernen. Sie sollten es einfach entfernt haben.

Diese Liste mag einfach erscheinen, aber jede dieser Listen zeigt sich auf hunderte verschiedene Arten und fügt Widerstand hinzu, der während des gesamten Entwicklungsprozesses Synergien schafft. Die Ineffizienz kann oft auf einfache und mathematische Weise nachgewiesen oder nachgewiesen werden.

Als Antwort auf Ihre Punkte ...

  • Code ist bereits geschrieben und es werden Anstrengungen unternommen

Aber es muss oft gepflegt werden. Es wird auch noch in Dingen wie in Datei suchen angezeigt.

  • Code kann in einer syntetischen und realen Umgebung getestet werden

Ich bin mir nicht sicher, was du damit meinst. Ich denke, es ist das gleiche wie beim letzten Mal. Sie meinen, dass der Code bereits getestet wurde und eine Bereinigung möglicherweise einen erneuten Test erfordert. Das sind Kosten, die sich normalerweise lohnen, da sie sich in 90% der Fälle auszahlen und um zu vermeiden, dass sie vor Produktionsbeginn gereinigt werden sollten. Fast jeder Code hat zwei Iterationen, damit es funktioniert und sauber wird. Der Grund dafür ist, dass zweimal getestet werden muss, weil jemand den letzten Schritt übersprungen hat. Wenn Ihr Code auch zu teuer ist, um das Diff, den Test (was wahrscheinlich ist, wenn er mit viel unbenutztem Code unordentlich ist) usw. zu überprüfen, dann ist das ein weiteres ganzes Problem.

  • Wenn es gut organisiert ist (gruppiert, separates Paket, lose gekoppelt usw.), stört es Sie nicht bei der gesamten Code-Analyse oder beim Refactoring

Ihr Code sollte sowieso so sein, aber das mildert das Problem nur mäßig. Es ist das seltsamste Argument zu hören, dass etwas organisiert und doch unrein sein sollte. Es ist normal zu versuchen, den Code modular zu halten und Abhängigkeiten zu reduzieren, aber Sie möchten auch wiederverwendbaren Code, und wenn alle Ihre Module eine Insel sind, sind Sie wahrscheinlich nicht trocken. Möglicherweise führen Sie auch eine übermäßige Entkopplung durch, die nichts anderes bewirkt, als das Problem nicht verwendeten unordentlichen Codes zu mindern.

  • Code kann in Zukunft verwendet werden

Viele Leute legen Wert auf geschriebenen Code. Wenn es jetzt nicht verwendet wird, ist es Eigengewicht und in der Realität wird oft nur ein Bruchteil des nicht verwendeten Codes verwendet, wenn Sie diesen Pfad beschreiten. Höchstwahrscheinlich ist es nicht wahrscheinlich, dass nicht verwendeter Code verwendbarer oder verwendeter Code ist. Der am wahrscheinlichsten wiederverwendete Code ist bereits verwendeter Code, der etwas bewirkt.

Schlimmer ist, dass nicht verwendeter Code keinen Zweck hat. Wenn jemand vorbeikommt und etwas ändern muss, das sich auf nicht verwendeten Code auswirkt, wird er ratlos sitzen und herausfinden, was dieser nicht verwendete Code ohne Zweck tun muss.

Es ist leicht für die Leute, sich so zu fühlen, wenn sie anfangen, da Code viel Aufwand erfordert. Einmal fließend und daran gewöhnt, wird Code wie Fahrradfahren. Sie werden feststellen, dass die Kosten für das Schreiben eines solchen Codes sinken, wenn die Kosten für die Aufrechterhaltung des Codes sinken.

  • Nach dem Löschen kann sich der Autor unwohl fühlen

Dies ist das Problem des Autors. Einerseits ist es egoistisch, eine Menge unbenutzten Codes herumzulassen, damit andere damit umgehen müssen. Wenn ein Autor seine Gefühle über die Codequalität stellt, sollte er wahrscheinlich nicht codieren. Sie gehen die Straße entlang mit diesem von Ihnen können ihren Code nicht reparieren, wenn er kaputt ist, weil es ihre Gefühle verletzt. Es ist kein gutes Zeichen, wenn jemand an Code angehängt ist, nur weil er ihnen gehört und nicht weil er gut ist. Ein Autor sollte sich über die Bereinigung seines Codes freuen. Dies ist, als würde jemand Ihren Müll für Sie herausnehmen und in den Papierkorb werfen.

Ich wäre überglücklich, wenn jemand das für mich tun würde. Was es einfacher machen könnte, über diese Gefühle hinwegzukommen, ist, anstatt darauf zu warten, dass jemand anderes es tut, es selbst zu versuchen. Schreiben Sie einen Code, den Sie erstellt haben, iterativ neu, damit er eine bessere Leistung erzielt, sich präzise bewegt, weniger überschüssig und flexibler ist und jedes Mal weniger Code enthält. Versuchen Sie, sich nicht gut über die Menge des Codes zu fühlen, sondern darüber, wie viel Sie mit so wenig Code erreichen können. Dies ist mühsam, um ein höheres Level zu erreichen. Sobald Sie dies getan haben, wird Ihr gesamter Code auf einem guten Level angezeigt, sodass er nicht mehr so ​​oft geebnet werden muss.


3

Zunächst sollten Sie immer ein Quellcodeverwaltungstool verwenden, um Ihre Projekte zu verwalten. Daher ist das Entfernen von nicht verwendetem Code eine gute Vorgehensweise, da Sie jederzeit die Quellcodeverwaltung verwenden können, um den entfernten Code abzurufen. Für mich ist der Grund für das Entfernen von nicht verwendetem Code, dass nur die Person, die den Code kennt, davon nicht weiß. Jemand anderes im Team wird auf diesen Code stoßen und versuchen herauszufinden, was er tut und wie er in die gesamte Anwendung passt und wird nach so viel Mühe enttäuscht sein, dass der Code überhaupt nicht verwendet wird :)


3

Diese Diskussion ist mehrere Jahre alt, aber ich bin gerade darauf gestoßen ...

Eine Sache, die ich nicht erwähnt habe, ist die Arbeit, die anfallen muss, um den nicht verwendeten Code zu entfernen. In vielen Fällen ist der Zeit- und Arbeitsaufwand zum Entfernen des nicht verwendeten Codes nicht trivial. Außerdem fallen in der Regel zusätzliche Kosten für das Testen und Dokumentieren des überarbeiteten Systems an. Nur eine weitere Sache, die im Entscheidungsprozess berücksichtigt werden muss.


2

Ich denke, dass Sie zwei Fälle haben können: - Anwendungscode: Wenn er nicht verwendet wird, ist er möglicherweise nicht getestet und wird im Laufe der Zeit nicht gewartet. Vielleicht können Sie zu einem "internen Code-Repository" wechseln. - API-Code: Wenn Sie eine Bibliothek schreiben, ist es meiner Meinung nach Eine bessere Wahl, um es zu pflegen, aber innerhalb Ihres aktiven Entwicklungsprozesses


2

Sind Sie sicher, dass der Code nicht verwendet wird?

Es reicht nicht aus, zu überprüfen, ob der Code noch kompiliert wird. In C ++, wenn Sie eine „nicht verwendet“ entfernen implizit definierte Methode wie operator=Sie nicht einen Compiler - Fehler in Gang zu bringen, wird die Klasse nur beginnen leise eine (möglicherweise falsch) Default - Implementierung zu verwenden. In Java oder C # kann der Code über Reflection verwendet werden. In objektorientierten Sprachen kann die Vererbung eine Rolle spielen (die Basisklasse kann jetzt aufgerufen werden). In fast jeder Sprache hat möglicherweise eine andere überladene Funktion übernommen.

Überprüfen Sie das Alter des Codes in der Versionskontrolle, nicht nur, dass er nicht verwendet wird. Ich habe Code gesehen, der unbenutzt aussah, aber gerade festgeschrieben wurde und tatsächlich der erste Schritt in einem anderen Entwicklerprojekt war.

Entfernen Sie nicht verwendeten Code aggressiv

Sie zahlen für die Pflege des Codes:

  • Beheben defekter Builds (Engineering-Zeit). Wir hatten kürzlich eine komplizierte #includeÄnderungskette, die eine neue Überlastung des nicht verwendeten Codes einführte, was zu angemessenen Kopfschmerzen für jeden Ingenieur in einem Team von Dutzenden von Entwicklern führte.
  • In Maschinenressourcen für Tests (vorausgesetzt, Sie haben selbst testende kontinuierliche Builds). Mein Team hat sich kürzlich alle unsere langsamsten Tests angesehen, und viele davon waren über ansonsten nicht verwendeten Code. Ingenieure, die Tests lokal oder im Rahmen der kontinuierlichen Integration ausführen, warten auf Tests über nicht verwendeten Code.
  • In Bezug auf die Lesbarkeit (wieder Engineering-Zeit). Ihre Header-Dateien repräsentieren eine API. Wenn sie Funktionen enthalten, die niemand verwenden möchte, aber jeder lesen muss, ist die Lernkurve Ihres Codes umso schwieriger.
  • Bei der Codesuche (wieder Engineering-Zeit). Würden Sie Ihr Haus, Ihre Festplatte oder Google Drive aufräumen? Je mehr Sie eine Domain durchsuchen, desto wichtiger ist es, dass sie relevante Inhalte enthält, um Fehlalarme zu vermeiden (oder Sie verwenden eine komplexere Suche wie eine Websuchmaschine).

Ich würde sagen, dass im Wesentlichen der gesamte Code, den der durchschnittliche Entwickler schreibt, innerhalb von fünf Jahren nicht mehr verwendet wird, sodass diese Aktivität niemals aufhört. Lass das nicht du sein; Schreiben Sie nur hochwertigen und absolut notwendigen Code.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.