Ich arbeite derzeit an einem Indie-Projekt, daher habe ich nicht den Luxus, während menschlicher Tests oder externer Codeüberprüfungen zu arbeiten. Ich sehe jedoch keine schwierigen Fehler in meinem aktuellen Code (ich behebe sie so, wie ich sie sehe und meistens handelt es sich nur um falsche Feldnamen und dergleichen (Dinge, die Sie in ein oder zwei Minuten beheben), und ich teste sie, nachdem ich eine Funktion implementiert habe, bevor ich sie weitergebe. In letzter Zeit war meine LOC-Nummer ungefähr 400 pro Tag (für die Aufzeichnung ist es C #), und ich implementiere nicht nur neue Systeme, sondern schreibe auch Dinge neu, die ich bereits geschrieben habe, und behebe einige Fehler.
Sollte ich gestört werden? Ist es das Zeichen, dass ich anhalten und den gesamten Code, den ich bis zu diesem Datum geschrieben habe, überprüfen und umgestalten muss?
quelle
Antworten:
LOC ist wahrscheinlich eine der am häufigsten missbrauchten Metriken und daher wahrscheinlich eine der nutzloseren Messungen der Codequalität und eine noch nutzlosere Messung des Programmieraufwands.
Ja, das ist eine kühne Aussage für mich, und nein, ich kann Sie nicht auf Studien verweisen, die meinen Standpunkt belegen. Ich kann jedoch mit hart erarbeiteter Erfahrung feststellen, dass Sie sich wahrscheinlich Sorgen über die falschen Probleme machen, wenn Sie sich Gedanken darüber machen, wie viel Code Sie geschrieben haben.
Sie müssen sich zunächst fragen, was Sie messen oder beweisen möchten und ob dieser Beweis nur aus Interesse ist oder um eine umfassendere Qualitätsverbesserung zu unterstützen, und wo Sie diese Informationen verwenden müssen, um ein Buy-In von Ihrem Team zu erhalten / Management, etwas dagegen zu tun.
Eines der Dinge, für die ich LOC benutze, ist eine Art Überprüfung der geistigen Gesundheit. Wenn ich viel Code schreibe, interessiere ich mich mehr für LOC pro Methode oder LOC pro Klasse als für LOC insgesamt. Diese Messungen könnten Indikatoren sein , dass Sie weiter haben Refactoring zu tun , wenn Sie ein wenig OCD über sich fühlen , wie gut einkalkuliert Code sein sollte. Sehr große Klassen müssen möglicherweise in einige kleinere Klassen umgestaltet werden, und lange mehrzeilige Methoden müssen möglicherweise in mehrere Methoden oder andere Klassen unterteilt werden oder weisen sogar auf eine Wiederholung hin, die entfernt werden könnte. Beachten Sie, dass ich dort mehrmals das Wort "könnte" verwendet habe.
Die Realität ist, dass LOC nur einen möglichen Indikator bietet und keine wirkliche Garantie dafür, dass sich Ihr Code möglicherweise ändern muss. Die eigentliche Frage ist, ob sich der Code wie erforderlich und wie erwartet verhält. Wenn ja, ist Ihre nächste Frage, ob Sie den Code problemlos warten können oder nicht und ob Sie jetzt oder in Zukunft Zeit haben, Änderungen am Arbeitscode vorzunehmen, um Ihren Wartungsaufwand in Zukunft zu verringern.
Oft bedeutet viel Code, dass Sie später mehr warten müssen, aber manchmal kann sich sogar gut faktorisierter Code auf Hunderte von Codezeilen erstrecken, und ja, manchmal schreiben Sie Hunderte von Codezeilen pro Tag. Die Erfahrung zeigt mir jedoch, dass bei einer täglichen Ausgabe von Hunderten von Zeilen neuen Codes häufig das Risiko besteht, dass ein Großteil des Codes unangemessen von einer anderen Stelle ausgeschnitten und eingefügt wurde, und dass dies an sich auf Probleme mit hinweisen kann Vervielfältigung und Wartung, aber auch dies ist keine Garantie. Daher verlasse ich mich in der Regel auf meine Erfahrungen und Instinkte, die darauf beruhen, wie die anstehenden Aufgaben erledigt wurden.
Der beste Weg, um das Dilemma zu vermeiden, das IMHO in Ihrer Frage auftaucht, besteht darin, LOC zu vergessen und die ganze Zeit umzugestalten. Schreiben Sie zuerst Ihren Codetest, implementieren Sie, um fehlzuschlagen, refactor, um zu bestehen, und sehen Sie dann, was dort möglicherweise refactoriert wird, und verbessern Sie dann den Code. Sie verlassen die Aufgabe mit dem Wissen, dass Sie Ihre Arbeit bereits überprüft haben, und Sie werden nicht so besorgt sein, sich in Zukunft selbst zu erraten. Wenn Sie einen Test-First-Ansatz verwenden, wie ich ihn beschrieben habe, bedeutet jede LOC / Tag-Messung an Ihrem fertigen Code realistisch gesehen, dass Sie das 3-5-fache der gemessenen Menge geschrieben haben, wobei dieser Aufwand durch Ihr laufendes Refactoring erfolgreich verborgen wird Bemühungen.
quelle
Überhaupt nicht - an manchen Tagen beheben Sie einen schwer zu findenden Fehler und ändern nur eine Zeile. An anderen Tagen fügen Sie neuen Code hinzu und schreiben mehrere tausend Zeilen.
Das tägliche LOC sagt Ihnen nichts, außer dass die Aufgaben für diesen Tag mit 400 Codezeilen erledigt werden könnten.
quelle
Bei einigen dieser Antworten fehlt der Punkt, Sie verwenden LOC nicht als Maß für die Produktivität (wenn Sie es wären, würden Sie sich keine Sorgen darüber machen, zu "produktiv" zu sein). Was Sie tatsächlich tun, ist die Sorge um Ihre Codequalität, weil Code ist der Feind , über den man sich Sorgen machen muss.
Leider ist die einzige Möglichkeit, Informationen über die Codequalität zu erhalten, die Codeüberprüfung. Da Sie ein Ein-Mann-Team sind, ist dies schwierig, selbst wenn Sie aufgehört haben, Ihren Code zu überprüfen (und Sie möchten nicht wirklich aufhören, oder?) Eigener Code enthüllt nicht so viel wie ein Peer, der Ihren Code überprüft. Ich würde vorschlagen, dass Sie versuchen, jemanden zu veranlassen, zumindest einen Teil Ihres Codes zu überprüfen, damit Sie feststellen können, ob Ihr 400 LOC / Tag Kauderwelsch produziert oder nicht. Auch eine unabhängige Überprüfung des Tagescodes wird hier helfen
quelle
Sie sollten sich nicht mit der Anzahl der LOCs beschäftigen, die Sie pro Tag produzieren.
Aber Sie sollten sich Sorgen machen:
quelle
LOC ist ein "offizielles" Maß für die Produktivität, aber Argumente gegen seinen Wert können langwierig sein (Ein ORM kann jedoch in 3 Minuten 50.000 Codezeilen generieren, wenn das Datenbankdesign falsch ist, wird der gesamte Code möglicherweise in den Papierkorb verschoben).
Ich schlage vor, Sie messen Ihren Fortschritt, indem Sie% erledigte Aufgabe gegen Zeit vs.% geplante Aufgaben verfolgen. Darauf kommt es an. Kunden zahlen für Arbeitscode, der Geschäftswert bietet, nicht für die LOCs.
Einige Referenzen zu LOC
Gegen: LOC-Sinnloseste Maßnahme
Bis zu einem gewissen Grad neutral : Wiki-LOC
Pro (Ich bin mit den meisten nicht einverstanden, aber Sie können einen Blick darauf werfen): Größenunterschiede und Codezeilen
quelle
Messen Sie auch die Anzahl der Code-Duplikate ?
Wenn die hohe Ausgabe darauf zurückzuführen ist, dass Sie viel Kopieren und Einfügen in Ihrem Code haben, sollten Sie sich Sorgen machen.
Grund: Falls in Ihrer Copy & Paste-Quelle ein Fehler aufgetreten ist, ist es schwierig und fehleranfällig, alle Verwendungen des Copy & Paste zu korrigieren
quelle
Wenn Sie an schönen Funktionscode glauben, sollte dies Ihre einzige Maßnahme sein
quelle