Ich versuche einen Weg zu finden, um die Langlebigkeit von Code in Open Source-Projekten zu analysieren: Das heißt, wie lange eine bestimmte Codezeile aktiv ist und verwendet wird.
Mein derzeitiger Gedanke ist, dass die Lebensdauer einer Codezeile beginnt, wenn sie zum ersten Mal festgeschrieben wird, und endet, wenn eine der folgenden Situationen eintritt:
- Es ist bearbeitet oder gelöscht,
- Ausgenommen von Builds,
- Kein Code in seinem Build wird für einen bestimmten Zeitraum (z. B. ein Jahr) beibehalten.
HINWEIS: Zur Verdeutlichung, warum eine "Bearbeitung" als "Tod" gezählt wird, werden bearbeitete Zeilen als "neue" Generation oder Codezeile gezählt. Wenn es keinen einfachen Weg gibt, dies zu tun, kann die Langlebigkeit einer Linie oder die Abstammung eines Vorfahren nicht berücksichtigt werden.
Was würde sonst die Lebensdauer einer Codezeile bestimmen?
version-control
efficiency
Fehler
quelle
quelle
Antworten:
Andy Ozment betrachtete OpenBSD im Jahr 2006 mit der gleichen Frage: Milch oder Wein: Verbessert sich die Software-Sicherheit mit zunehmendem Alter?
Möglicherweise können Sie aus seiner Definition lernen. Es ist auch ein sehr interessantes Papier mit einer interessanten Schlussfolgerung, die nicht in die Software-Management-Überlieferung aufgenommen wurde:
quelle
Ich glaube nicht, dass es dafür eine Antwort gibt. Es ist stark projektabhängig. Einige sind im Laufe der Jahre stabiler, andere sind im Laufe der Jahre volatiler / umgestaltet / entwickeln sich weiter.
Darüber hinaus ist es schwer zu messen. Ist eine bearbeitete Linie wirklich das Ende ihrer Lebensdauer? Was ist mit nur einer kosmetischen Änderung wie der Neuformatierung der Codebasis mit Tabulatoren oder Leerzeichen? IMHO das zählt nicht als erneuerte Codebasis, aber es würde nach Ihren Kriterien.
Trotzdem denke ich, dass ein guter Teil der LOCs für immer lebt.
Der Grund ist einfach: Es ist viel einfacher, neuen Code hinzuzufügen, als etwas zu entfernen. Besonders wenn das System komplex ist und im Laufe der Jahre gewachsen ist. Es kommt dann schnell zu einem Punkt, an dem es "riskant" ist, nicht trivialen Code zu entfernen oder zu ändern. Es könnte Fehler verursachen, die Kompatibilität beeinträchtigen, einen Schmetterlingseffekt von Änderungen hervorrufen ... Ich denke, je größer die Codebasis wird, desto älter wird sie, desto mehr bleiben die LOCs.
Darüber hinaus neigen nur gute Programmierer dazu, Codebasen zu bereinigen und die Zeilen zu reduzieren. Alle anderen neigen dazu, die LOCs zu stapeln. Und bis jetzt gewinnen letztere bei weitem. ;)
quelle
Das Löschen oder Ausschließen einer Codezeile ist definitiv ein Hinweis auf das Ende ihrer Lebensdauer.
Bei einer Neufassung der Bearbeitung würde ich folgende Frage stellen: Führt diese Aussage nach der Bearbeitung zu einem anderen Ergebnis?
Wenn die Antwort ja lautet, würde ich sagen, dass die vorherige Aussage nicht mehr verfügbar ist, andernfalls würde ich sie immer noch als Fortsetzung der vorherigen Aussage betrachten.
Beispiel für die Änderung des Ergebnisses:
zu:
Beispiel für die Fortsetzung der Lebensdauer:
zu:
quelle