Wie dokumentiere ich Code?
Sie haben bereits einen Hinweis: Sehen Sie sich an, wie die Java-API dokumentiert ist.
Im Allgemeinen gibt es keine eindeutigen Regeln, die für jedes Projekt gelten. Wenn ich an geschäftskritischen Großprojekten arbeite, hat die Dokumentation nichts mit der zu tun, die ich für eine kleine Open Source-Bibliothek schreiben würde, was wiederum nichts mit der Dokumentation meines mittelgroßen persönlichen Projekts zu tun hat .
Warum sind viele Open Source-Projekte nicht gut dokumentiert?
Weil die meisten Open-Source-Projekte von Leuten gemacht werden, die zu diesen Projekten beitragen, weil es Spaß macht. Die meisten Programmierer und Entwickler sind der Meinung, dass das Schreiben von Dokumentationen nicht Spaß genug macht , um kostenlos zu sein.
Warum sind viele Closed-Source-Projekte nicht gut dokumentiert?
Weil es eine Menge Geld kostet, (1) gute Dokumentation zu schreiben und (2) zu pflegen.
Die unmittelbaren Kosten (Kosten für das Verfassen der Dokumentation) sind für die Beteiligten klar erkennbar: Wenn Ihr Team die nächsten zwei Monate für die Dokumentation des Projekts benötigt, müssen zwei zusätzliche Monatsgehälter bezahlt werden.
Die langfristigen Kosten (Kosten für die Wartung der Dokumentation) werden auch für die Manager ziemlich leicht erkennbar und sind häufig das erste Ziel, wenn sie die Kosten senken oder die Verzögerungen verkürzen müssen. Dies führt zu einem zusätzlichen Problem veralteter Dokumentation, die schnell unbrauchbar und in der Aktualisierung extrem teuer wird.
Die langfristigen Einsparungen (Einsparungen, die dadurch entstehen, dass Sie nicht ein paar Tage mit dem Erforschen des Legacy-Codes verschwenden müssen, um eine grundlegende Sache zu verstehen, die vor Jahren hätte dokumentiert werden müssen) sind andererseits schwer zu messen, was das Gefühl einiger Manager bestätigt Das Verfassen und Verwalten von Dokumentationen ist Zeitverschwendung.
Was ich oft beobachte ist, dass:
Zu Beginn ist das Team bereit, viel zu dokumentieren.
Im Laufe der Zeit erschweren Termindruck und mangelndes Interesse die Pflege der Dokumentation immer mehr.
Einige Monate später kann eine neue Person, die sich dem Projekt anschließt, die Dokumentation praktisch nicht verwenden, da sie überhaupt nicht dem tatsächlichen System entspricht.
Das Management macht die Entwickler dafür verantwortlich, dass sie die Dokumentation nicht gepflegt haben. Entwickler bitten, einige Wochen damit zu verbringen, es zu aktualisieren.
Wenn das Management dafür einige Wochen einräumt, wiederholt sich der Zyklus.
Wenn das Management aufgrund früherer Erfahrungen ablehnt, erhöht dies nur die schlechten Erfahrungen, da das Produkt nicht dokumentiert ist, aber einige Monate damit verbracht wurden, es zu schreiben und zu warten.
Die Dokumentation sollte ein kontinuierlicher Prozess sein, genau wie das Testen. Verbringen Sie eine Woche damit, ein paar Tausend LOCs zu programmieren, und es ist sehr, sehr schmerzhaft, wieder mit Tests und Dokumentationen zu beginnen.
Wie kann man das Team ermutigen, Unterlagen zu schreiben?
Ähnlich wie bei den Methoden, mit denen Menschen dazu ermutigt werden, sauberen Code zu schreiben, regelmäßig umzugestalten, Entwurfsmuster zu verwenden oder genügend Komponententests hinzuzufügen.
Mit gutem Beispiel vorangehen. Wenn Sie eine gute Dokumentation schreiben, tun dies möglicherweise auch Ihre Paare.
Führen Sie systematische Codeüberprüfungen durch, einschließlich formaler Codeüberprüfungen, die auf die Einsichtnahme in die Dokumentation abzielen.
Wenn einige Mitglieder des Teams einer guten Dokumentation (oder überhaupt einer Dokumentation) besonders abgeneigt sind, besprechen Sie das Thema unter vier Augen mit ihnen, um zu verstehen, welche Hindernisse sie daran hindern, eine bessere Dokumentation zu verfassen. Wenn sie den Mangel an Zeit verantwortlich machen, sehen Sie die Quelle der Probleme.
Machen Sie das Vorhandensein oder den Mangel an Dokumentation für ein paar Wochen oder Monate messbar, aber konzentrieren Sie sich nicht darauf. Sie können zum Beispiel die Anzahl der Kommentarzeilen pro LOC messen, machen dies jedoch nicht zu einer dauerhaften Maßnahme. Andernfalls schreiben Entwickler lange, aber bedeutungslose Kommentare, um die niedrigen Punktzahlen zu beseitigen.
Verwenden Sie Gamification. Dies kommt zusammen mit dem vorherigen Punkt.
Verwenden Sie eine positive / negative Verstärkung .
(Siehe den Kommentar von SJuan76 ) Behandle das Fehlen von Kommentaren als Fehler. In Visual Studio können Sie beispielsweise eine Option zum Generieren von XML-Dokumentation aktivieren. Wenn Sie außerdem überprüfen, ob alle Warnungen als Fehler behandelt werden, wird die Kompilierung angehalten, wenn ein Kommentar am Anfang einer Klasse oder Methode fehlt.
In Bezug auf die drei vorhergehenden Punkte sollte dieser Punkt mit Vorsicht verwendet werden. Ich habe es eine Weile mit einem besonders starken Team von Programmieranfängern verwendet und es endete mit StyleCop-kompatiblen Kommentaren wie diesen:
/// <summary>
/// Gets or sets the PrimaryHandling.
/// </summary>
public Workflow PrimaryHandling { get; set; }
die waren, hm ..., nicht besonders hilfreich.
Denken Sie daran: Nichts Automatisiertes kann Ihnen helfen, schlechte Kommentare zu finden, wenn Programmierer mit Ihnen schrauben wollen . Nur Codeüberprüfungen und andere menschliche Aufgaben werden helfen.
Gibt es gute Beispiele dafür, wann minimale oder keine Dokumentation benötigt wird?
Eine Dokumentation zur Erläuterung der Architektur und des Designs ist nicht erforderlich:
Für einen Prototyp
Für ein persönliches Projekt, das in ein paar Stunden geschrieben wurde, um eine Aufgabe zu erledigen, während Sie ziemlich sicher sind, dass dieses Projekt nicht länger aufrechterhalten wird,
Bei jedem Projekt, bei dem aufgrund der geringen Größe und des besonders sauberen Codes offensichtlich ist, dass Sie mehr Zeit mit dem Verfassen von Dokumentationen verbringen, als bei allen zukünftigen Betreuern, die sich mit dem Code befassen.
In-Code-Dokumentation (Code-Kommentare) wird nach Ansicht einiger Entwickler nicht benötigt, wenn der Code selbstdokumentierend ist. Für sie ist das Vorhandensein von Kommentaren, außer in den seltenen Fällen, kein gutes Zeichen, sondern ein Zeichen dafür, dass der Code nicht klar genug umgestaltet wurde, ohne dass Kommentare erforderlich waren.
Ich bin der Meinung, dass wir eine Überprüfung der Dokumentation durchführen sollten, nachdem ein Projekt geliefert wurde.
Wenn Ihr Projekt mindestens einmal pro Woche geliefert wird, ist es der richtige Weg. Wenn Ihr Projekt nicht flexibel ist und alle sechs Monate geliefert wird, sollten Sie regelmäßigere Überprüfungen durchführen.