Hat jemand jemals versucht, zuerst eine vollständige Codedokumentation zu erstellen, bevor er den Code tatsächlich schrieb? Ich habe früher darüber nachgedacht, weil ich dachte, es würde helfen, eine konkrete Schnittstelle zu schreiben und sicherzustellen, dass Ihr ursprüngliches Design nicht auf dem Boden liegt, indem Sie darüber nachdenken, wie Klassen interagieren. Ist das eine gute Idee? Hat es jemand versucht? Ell
documentation
ell
quelle
quelle
Antworten:
Ja.
Sie denken darüber nach, was genau Ihr Code tun soll. Die Idee ist, dass Sie mit jedem Teil des Codes beginnen und genau wissen, was zu tun ist, um dieses Modul zu vervollständigen.
Es ist auch einfacher, etwas auf dem Zeichenbrett zu reparieren als in der IDE.
quelle
Es gibt zwei Arten, darüber nachzudenken:
1) Dokumentation wie in Word-Dokumenten, Wiki usw. Per Definition können Sie keine vollständige Codedokumentation haben, da Sie keinen Code zum Dokumentieren haben. Sie können zunächst versuchen, hochgradiges Design, Annahmen, Schnittstellen und Verträge zu dokumentieren.
2) Dokumentation als ausführbare Tests. Es gibt eine Denkschule, die besagt, dass ausführbare Komponententests die beste Dokumentation sind. Diese Denkschule befürwortet auch diese Art von Dokumentation, bevor der Code (TDD) geschrieben wird. Gleichzeitig schreiben Sie nicht von Anfang an alle Tests für das gesamte System. Sie teilen es zuerst nach Anwendungsfällen auf, dann führen Sie Tests und Code pro Anwendungsfall durch.
quelle
Beginnend mit der Dokumentation handelt es sich um ein klassisches Wasserfallmodell, das alle mit diesem Modell verbundenen Fallstricke aufweist. Je mehr Sie dokumentieren, desto mehr müssen Sie aktualisieren, wenn sich die Anforderungen ändern. Ein Vorteil des Einstiegs in die Benutzerdokumentation besteht darin, dass Sie möglicherweise früher Feedback (und damit Änderungen) erhalten. Die Erfahrung zeigt jedoch, dass die meisten Menschen schlecht darin sind, Dokumentation mental auf Aktionen abzubilden. Daher verwenden wir stattdessen Prototypen, mit denen die Benutzer die Software tatsächlich verwenden und auf diese Weise Feedback geben können.
Eine Variation von "Dokumentation zuerst" ist die gebildete Programmierung . Schreiben Sie zunächst eine Beschreibung der Funktionsweise des Programms aus Sicht des Programmierers. Passen Sie das weiter an, bis es kompiliert ist. Voila, ein Alphabetisierungsprogramm.
quelle
Ich persönlich finde es besser, Diagramme (wie UML) zu verwenden, um eine einfache Modellierung durchzuführen und den Fluss der Dinge zu zeigen. Dies ist viel schneller als das Dokumentieren von Dingen in Worten und kann, wenn es richtig gemacht wird, genauso beschreibend sein. Ich würde jedoch zögern, eine vollständige Dokumentation zu erstellen, da ich persönlich noch nie ein Projekt hatte, an dem ich gearbeitet habe und das sich im Laufe der Programmierung nicht geändert hat.
BEARBEITEN: Einige Dokumentationen sollten jedoch im Laufe der Zeit durchgeführt werden. Dies erleichtert die spätere vollständige Dokumentation.
quelle
Joshua Bloch diskutiert genau diesen Punkt in seinem Interview für das Buch "Coders at Work".
Im Gegensatz zu eher orthodoxen und akademischen Ansichten rät er etwas nach Ihren Wünschen (vielleicht haben Sie es dort selbst gelesen?): Bevor Sie die Dokumentation schreiben, müssen Sie verstehen, was Sie vom System wollen, und eine "realere" bekommen "Gefühl. Zu diesem Zweck entwarf er einen Teil der Schnittstellen und einen Clientcode, der sie verwendet.
Wenn Sie bereits in diese Richtung denken, wäre es gut, wenn Sie das Buch in die Hand nehmen und das gesamte Interview lesen könnten. Wie gesagt, er ist immer sehr aufschlussreich.
quelle
Einige Leute gehen sogar noch weiter und sagen, dass ein Unternehmen vollständig rückwärts arbeiten sollte
Siehe http://www.allthingsdistributed.com/2006/11/working_backwards.html
quelle
Das Schreiben der vollständigen Codedokumentation zuerst ist wahrscheinlich übertrieben und erinnert ein wenig an die Wasserfallmethode. Ich habe jedoch festgestellt, dass ein pragmatischerer Ansatz darin besteht, zuerst die README zu schreiben . Hier ist der Grund:
Die README-Datei dokumentiert nicht jedes Detail Ihres Projekts. Stattdessen enthält es normalerweise die folgenden Informationen:
Wenn ich das "Verkaufsgespräch" im Voraus schreibe, muss ich mir ganz klar darüber sein, warum dieses Projekt existieren sollte und warum Entwickler es verwenden sollten. Das bloße Schreiben vollständiger Sätze zur Beschreibung des Projekts ändert es oft zum Besseren: Sie verstehen es besser, entwickeln neue Ideen und decken potenzielle Probleme auf. Es ist auch ein großartiges Priorisierungstool: Alles im "Verkaufsgespräch" ist ein Muss!
Die "Kurzbeispiele" und die "Kurzanleitung" zwingen mich, die wichtigsten Anwendungsfälle aus der Sicht des Benutzers zu durchdenken. Ich habe festgestellt, dass dies vor dem Schreiben von Code - bevor die Implementierungsdetails und engen Fristen festgefahren sind - zu viel saubereren APIs und Designs führt. Denken Sie daran: Programme sollten so geschrieben werden, dass sie gelesen werden können, und nur im Übrigen, damit Maschinen ausgeführt werden können ( SICP ).
In "Weitere Dokumentation" erstelle ich einen Überblick über die Teile, für die eine detaillierte Dokumentation erforderlich ist, die später durchgeführt werden soll. Mit "Projektorganisation" kann ich herausfinden, wer an dem Projekt und den Codierungspraktiken arbeiten wird. "Rechtliche Hinweise" ... nun, kann diese auch aus dem Weg räumen.
Sobald Sie diese grundlegende README-Datei eingerichtet haben, verfügen Sie über ein Dokument, das für Diskussionen, Entwurfsprüfungen, Aufteilung der Arbeit und Projektplanung nützlich ist. Überprüfen Sie während der Arbeit am Projekt regelmäßig die README-Datei, um sicherzustellen, dass Sie immer noch auf dem richtigen Weg sind. Wenn Sie die README-Datei und die "weitere Dokumentation" schrittweise aktualisieren, bedeutet dies, dass Ihre gesamte Dokumentation fertig ist, wenn der Code fertig ist. Dies ist eine viel angenehmere Erfahrung, als alles in letzter Minute zu dokumentieren.
Weitere Informationen finden Sie unter:
quelle
Warum möchten Sie nicht darüber nachdenken, wie Klassen interagieren? Warum ist das eine schlechte Sache? Ich denke tatsächlich über die Interaktionen nach, bevor ich überhaupt weiß, was die Klassen sind. Auf diese Weise identifizieren sich die Klassen.
quelle
Sie sollten eine Vorstellung davon haben, was Sie vorhaben, bevor Sie den Code schreiben. Die Frage ist immer, wie Sie das, was Sie codiert haben, mit dem, was Sie geschrieben haben, synchron halten können. Einige sagen, versuchen Sie es nicht, andere sagen, vergessen Sie die ursprünglichen Dokumente und halten Sie die Kommentare aufrecht. Natürlich ist der Code immer die kanonische Quelle. Es stellt sich dann die Frage, ob es sich lohnt, zu dokumentieren, was der Code für diejenigen tut, die später kommen oder den Code verwenden. Jeder kann herausfinden, was eine Funktion tut. Die Aufgabe des Autors ist es, jemandem zu helfen, in 5 Minuten zu verstehen, was jeder in einer Stunde herausfinden kann. Addiere die Deltas und bestimme deinen Weg.
quelle