Ich möchte meinen Code so dokumentieren, dass er mindestens Monate später gelesen und durchsucht werden muss.
Ich weiß, dass es verschiedene Arten von Dokumentation gibt (im Quellcode und außerhalb, Sequenzdiagramme usw.).
Ich möchte nur wissen, wie ich meinen Code effizient dokumentieren kann, damit ich nach einigen Monaten weniger Zeit für das Lesen des Codes und das Verstehen des Codeflusses aufwenden muss.
Antworten:
Ich muss zugeben, dass ich mit einigen Dingen, die in den anderen Antworten empfohlen wurden, nicht einverstanden bin, also werfe ich meine zwei Cent.
Bemerkungen
Die Dokumentation ist für Fremde, die Ihren Code lesen, äußerst hilfreich. Normalerweise sind viele Dinge nicht ausführlich genug, um sofort gelesen und verstanden zu werden, und Sie sollten dann erklären, was Sie tun.
Bearbeiten : Die Diskussion im Kommentarbereich hat auf etwas Richtiges hingewiesen - Überkommentierung wird normalerweise durchgeführt, wenn fehlerhafter Code geschrieben wird.
Das Kommentieren Ihrer Arbeit sollte präzise und minimal sein, aber meiner Meinung nach sollte es definitiv vorhanden sein. Mindestens ein Kommentar für jeweils 15 Codezeilen. Fügen Sie zum Beispiel über den Code-Blöcken eine Zeile hinzu, die beschreibt, was Sie tun:
Minimale Kommentare, die erklären, warum und was Sie tun, sind im gesamten Code sehr hilfreich. Ich bin mit der Antwort, die besagt, nicht einverstanden
Sehr oft wird anmutig guter Code dokumentiert. Es ist wahr, dass schlechte Programmierer ihre Dokumentation wie "Okay, mein Code ist schlecht, fügen wir ein paar Sätze hinzu, um es klarer zu machen" sehen.
Ja, und obwohl dies ziemlich häufig vorkommt, ist es auch richtig, dass gute Programmierer, die sauberen Code schreiben, sicherstellen möchten, dass sie zu ihrem Code zurückkehren und verstehen, warum sich ihre Funktion so verhalten soll oder warum sie das brauchten Leitung, die etwas redundant wirkt, etc ...
Ja, Kommentare, die offensichtliche Dinge erklären, Kommentare, die unklar sind, Kommentare, die nur zusammengestellt wurden, um sicherzustellen, dass "dieser Code dokumentiert ist, ja, was auch immer", Code-Geruch ist. Sie erschweren und irritieren das Lesen des Codes. (Ein Beispiel unten hinzufügen)
Aber Kommentare, die den Standards entsprechen, das Warum und Nicht-Wie erklären und die richtigen Fragen beantworten , sind sehr, sehr, sehr hilfreich.
Inline-Kommentare
Eine Sache, die Sie NICHT tun sollten (und wenn ich das größer schreiben könnte, würde ich es tun), ist, Ihre Kommentare in die gleiche Codezeile zu schreiben. Es macht Kommentare sehr zeilenspezifisch, was den Zweck des Kommentierens Ihres Codes völlig verfehlt.
Zum Beispiel schlechte Inline-Kommentare:
Es wäre viel einfacher, diesen Code zu lesen und zu verstehen, ohne die Kommentare, die ihn unübersichtlich und unleserlich machen.
Stattdessen sollten Kommentare in Ihrem Code über den Codeblöcken platziert werden und die wichtigen Fragen beantworten, die beim Lesen des Codeblocks auftreten können.
Viel klarer, oder? Jetzt wissen Sie auch, dass Sie die
login()
Funktion verwenden und die Parameter fürsend_mail()
alles bereitstellen müssen, was Sie verwendet haben. Hilft ein bisschen, aber eins fehlt noch.Funktionsdokumentation
Wurde viel diskutiert. Sie sollten Ihren Lesern immer mitteilen, worum es in Ihrer Funktion geht, warum und was sie tut. Wie es das macht, das gehört nicht zur Dokumentation, sondern vielleicht zu Fußnoten der Funktion.
Sie sollten klar beschreiben, was Sie von Ihren Parametern erwarten und ob sie mit einer bestimmten Methode abgerufen / erstellt werden sollen. Sie müssen angeben, was Ihre Funktion zurückgeben soll, wie sie verwendet wird usw.
Auch dies ist meine Meinung und Methodik beim Schreiben meines Codes. Nicht nur diese, sondern auch einige der Dinge, bei denen ich den anderen Antworten nicht zustimmen konnte. Oh, und natürlich lesen nicht nur die Kommentare Ihren Code aus, sondern auch Ihren Code selbst. Schreiben Sie sauberen Code, verständlich und wartbar . Denk beim Programmieren an dein zukünftiges Ich ;-)
quelle
IMO Die beste Dokumentation ist die Dokumentation, die Sie eigentlich nicht benötigen. Ich hasse es auch, Dokumente und Kommentare zu schreiben.
Mit dem Gesagten:
n
, sondernnumberOfItemsFound
zum Beispiel.quelle
numberOfItemsFound
ist aber ziemlich ausführlich; zu wortreich ist auch ein Thema.Behandle deinen Code als Dokumentation
Ihr Code ist Ihre primäre Dokumentation. Es beschreibt genau, was die resultierende App, Bibliothek oder was auch immer tatsächlich tut. Jeder Versuch, das Verständnis dieses Codes zu beschleunigen, muss mit dem Code selbst beginnen.
Es wird viel darüber geschrieben, wie man lesbaren Code schreibt, aber einige der wichtigsten Punkte sind:
n
eignet sich für eine Schleife, längere beschreibende Namen sind für Elemente mit größerem Umfang erforderlich).UpdtTbl
mit einem Kommentar verwenden, der erklärt, dass die Tabelle mit den angegebenen Regeln aktualisiert wird, wennUpdateTableContentsWithSuppliedRules
sie als Name verwendet werden können.Werden Sie besser darin, Code zu lesen
Das Lesen von Code, unabhängig davon, wie einfach er ist, ist eine erlernte Fähigkeit. Niemand kann natürlich gut Code lesen. Es braucht Übung; viel Übung. Gehen Sie zum Beispiel zu Github oder was auch immer und lesen Sie den Code der Bibliotheken, die Sie verwenden, anstatt nur diese Bibliotheken zu verwenden. Finde Code zum Lesen und lese ihn.
Kommentare sind ein Codegeruch
Erst dann kommen wir zu anderen Dokumentationen. Vermeiden Sie erstens, wie bereits erwähnt, Kommentare. Wenn ich auf Code stoße, der Kommentare enthält, bereite ich mich auf das Schlimmste vor: Der Code ist wahrscheinlich schlecht, und um ehrlich zu sein, sind die Kommentare wahrscheinlich auch schlecht. Es ist unwahrscheinlich, dass jemand, der nicht gut über Code kommunizieren kann, besser über die natürliche Sprache kommunizieren kann.
Beachten Sie die automatisch generierte API-Dokumentation
Beachten Sie auch die automatisch generierte API-Dokumentation. Wenn ich auf das Lesen solcher Dokumente zurückgreifen muss, liegt es daran, dass Ihr Code so schwer zu lesen ist. Machen Sie den Code noch einmal einfach und ich kann ihn direkt lesen.
Tests sind auch Dokumente
Tests sind auch Dokumentation. Behandeln Sie Ihre Unit-Tests also nicht als lästige Pflicht. Behandeln Sie sie als eine Möglichkeit, mit anderen zu kommunizieren (Ihr sechs Monate späteres Ich wird hier einbezogen), wie der Code funktioniert und wie er verwendet werden soll.
Zeichne Bilder, wenn es hilft
Wenn Sie UML mögen, dann finden Sie sich auf jeden Fall ein gutes Werkzeug und generieren Sie UML-Diagramme aus Ihrem Code. Versuchen Sie niemals, damit Code zu generieren. Als Designtool ist es nicht gut, und als Ergebnis erhalten Sie schrecklichen Code.
Haben Sie ein Dokument "1000ft" anzeigen
Zum Schluss schreiben Sie sich ein Übersichtsdokument. Was macht die App? Wie macht es das? Mit welchen anderen Systemen wird die Verbindung hergestellt? Sachen wie diese. Versuchen Sie jedoch nicht, die Codestruktur hier zu beschreiben. Lassen Sie den Code das tun. Lassen Sie sich in diesem Dokument daran erinnern, warum Sie den Code ursprünglich geschrieben haben.
quelle
add 1 to i
, sollten sie erklären, warum der Code das tut, was er tut. Zum Beispiel kann der Codeif (!something.Exists()) {...}
kann einen Kommentar wie verwenden:// something exists only when (explanation of the broader scenario)
.// increment x
x++;
dass viele Kommentare nichts nützen, aber es ist falsch, das Baby mit dem Badewasser hinauszuwerfen und zu erklären, dass Kommentare immer schlecht sind. Zum Beispiel Kommentare des Formulars// this case should never happen because xyz
throw exception "unreachable"
.//XXX: Not using straight-forward method Foo here because ...
. Solche Kommentare können immens wertvoll sein, sind jedoch aus offensichtlichen Gründen nicht mit Code zu übermitteln.Geben Sie ein Anschreiben
Sofern Sie sich nicht in einem sehr technischen Bereich befinden, geht es bei den meisten Fragen rund um den Code nicht um das „Wie“, sondern um das „Warum“ oder das „Was“.
Um zu vermeiden, dass Benutzer in Ihrem Code nachsehen müssen, müssen Sie eine kurze Beschreibung schreiben. Dies hat den Vorteil, dass Sie sich auf einfache Weise einen Überblick über Beschreibungen verschaffen können und dieser sehr viel leichter zugänglich ist. (Auch für Leute, die den Code nicht sehen wollen / dürfen).
Selbst wenn die Leute technisch sind, sollte das Anschreiben Hinweise geben, wo sie etwas suchen sollten.
Einfache extrem minimalistische Punkte:
Beispiel
quelle
Der größte Geschwindigkeitsgewinn entsteht normalerweise durch das Erstellen separater Commits, die jeweils einen Zwischenschritt darstellen, der kompiliert und funktioniert.
Wenn ich also einen neuen Parameter in eine Funktion einführen muss, um ein bestimmtes Feature zu implementieren, gibt es ein Commit, das nichts anderes tut, als den Parameter in die Deklaration, in die Definition und an alle Aufrufstellen einzufügen. Mit dem nächsten Commit wird die Funktionalität eingeführt, und mit dem dritten Commit werden die Aufrufsites aktualisiert, die die neue Funktion verwenden.
Dies ist leicht zu überprüfen, da die rein mechanischen Änderungen schnell überblickt werden können und dann aus dem Weg gehen.
Wenn Sie den Code neu formatieren, sollte dies immer ein separates Commit sein.
quelle
Obwohl die vorhandenen Antworten ein oder zwei offensichtliche Unstimmigkeiten aufweisen, werde ich versuchen, die üblichen Ratschläge so zusammenzufassen, dass klar wird, woher alle kommen:
Andererseits, wenn überhaupt, irre ich mich wahrscheinlich zu weit in die andere Richtung und verwende fast nie Kommentare. Ihre Code-Prüfer werden Sie informieren, wenn Sie das richtige Gleichgewicht für sie gefunden haben. Wenn Sie sich jedoch bewusst bemühen, den obigen 3-Punkte-Plan einzuhalten, sind Sie wahrscheinlich ohnehin nahe an ihrem Optimum.
quelle