Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Softwaretests und Qualitätssicherung (https://www.delphipraxis.net/86-softwaretests-und-qualitaetssicherung/)
-   -   Was gehört alles in eine richtige Dokumentation? (https://www.delphipraxis.net/177633-gehoert-alles-eine-richtige-dokumentation.html)

Back2Code 18. Nov 2013 11:00

Was gehört alles in eine richtige Dokumentation?
 
Hallo alle zusammen, mich würde es interessieren von euch langjährigen Entwicklern mal zu erfahren was denn alles so in eine ordentliche Dokumentation rein gehören sollte. Habe bisher noch keine erstellt und würde mich über Beispiele & Leitfäden freuen.

Lemmy 18. Nov 2013 11:17

AW: Was gehört alles in eine richtige Dokumentation?
 
Tach,

präzisier bitte mal:
was für ne Dokumentation (komplette Software, Entwicklerlibs,..)? Für wen soll die sein (Anwender, Entwicklerkollegen, Nachfolger,...)?

Back2Code 18. Nov 2013 11:59

AW: Was gehört alles in eine richtige Dokumentation?
 
Zitat:

Zitat von Lemmy (Beitrag 1236380)
Tach,

präzisier bitte mal:
was für ne Dokumentation (komplette Software, Entwicklerlibs,..)? Für wen soll die sein (Anwender, Entwicklerkollegen, Nachfolger,...)?


Komplette Software, soll für andere Entwicklerkollegen / Projektmanager sein.

MaBuSE 18. Nov 2013 12:20

AW: Was gehört alles in eine richtige Dokumentation?
 
Zitat:

Zitat von Back2Code (Beitrag 1236386)
Komplette Software, soll für andere Entwicklerkollegen / Projektmanager sein.

Wie haben hier im Haus 4 Arten von Dokumentationen für jedes Projekt.
  1. Benutzerhandbuch für Endanwender
    Viel Prosa und Grafiken, damit sich auch neue Anwender schnell zurechtfinden.
    Es werden die typischen Arbeitsabläufe beschrieben und in einem Referenzkapitel alle Funktionen / Formulare.
  2. Systemdokumentation für Entwickler / Support
    Zur Systemdokumentation gehören auch die Dokumente vor der Programmierung (z.B. Pflichtenheft, Anforderungen, Änderungsanforderungen, ...)
    Ein Teil der System-Dokumentation ist ein PDF das aus den Kommentaren des Quelltextes generiert wird (mit Doc-o-matic). Das ist vor allem wichtig, wenn bestimmte Units auch von anderen Programmen benutzt werden.
    Auch zählen Klassendiagramme, Ablaufdiagramme, Unit-Abhänigkeiten usw. dazu.
    Die System Dokumentation sind bei uns mehrere Dokumente.
    Es macht keinen Sinn das alles in ein PDF zu zwängen.
  3. Changehistory
    Jede Änderung wird in Releasenotes festgehalten. Die Releasenotes sind in Prosa und für den Endanwender geschrieben. Jedes Mal, wenn eine neue Version in Produktion gegeben wird, wird die Releasenote um die Änderungen zu Vorversion ergänzt.
    Für die Entwickler gibt es eine eigene Historie. Diese besteht aus den Commit Kommentaren unserer Versionsverwaltung (ClearCase bzw. git).
  4. Sonstige
    Es gibt immer mal Dokumente, die in keine der oberen Kategorien passen, die wandern in den misc Ordner ;-)
Ich hoffe das hilft Dir.
MaBuSE

Nintendo 18. Nov 2013 12:38

AW: Was gehört alles in eine richtige Dokumentation?
 
Hallo,

- Schritt für Schritt Anleitung der Bedienung der Software

- Bei Softwareentwicklungssystemen genügend Beispiele, die möglichst alle Faähigkeiten des Entwicklungssystems abdecken. Plus eine ausführliche Hilfe für alle Prozeduren, Funktioen, Klassen, Methoden,...

- Verständliche Anleitung zur Benutzung von Zusatztools.

- Das heißt aber bei Kommandozeilenprogrammen dann auch:
jede Option in ihrer Bedeutung genau erklären
Genaue Angabe, in welcher Reihenfolge die Optionen angegeben
werden müssen oder besser noch das Tool so programmieren, das die
Reihenfolge der Optionen egal ist.

- Für diesen Fall auch Beispiele für die Verwendung des
Kommandozeilenprogrammes.

Bei Gui Programm:
- sinnvolle Voreistellungen
- wiederum Erklärung aller auswählbaren Optionen mit deren Bedeutung
- Auch hier Beispiele mit verschiedenen Einstellungen.

Ich hoffe, das hilft erst mal. Inzwischen ist mir jemand zuvor gekommen. Der hat schon alles Wichtige zusammengefasst.

Back2Code 18. Nov 2013 14:49

AW: Was gehört alles in eine richtige Dokumentation?
 
Gibt es freie Software die gut zum erstellen von Programmabhängigkeiten geeignet ist?

MaBuSE 18. Nov 2013 15:07

AW: Was gehört alles in eine richtige Dokumentation?
 
Zitat:

Zitat von Back2Code (Beitrag 1236419)
Gibt es freie Software die gut zum erstellen von Programmabhängigkeiten geeignet ist?

Schau mal den Link in meinem Posting oben :stupid:
(bzw. Im Zitat unten)

Zitat:

Zitat von MaBuSE (Beitrag 1236388)
  1. Systemdokumentation für Entwickler / Support
    ..., Unit-Abhänigkeiten ...
Ich hoffe das hilft Dir.
MaBuSE


Back2Code 18. Nov 2013 15:11

AW: Was gehört alles in eine richtige Dokumentation?
 
Zitat:

Zitat von MaBuSE (Beitrag 1236423)
Zitat:

Zitat von Back2Code (Beitrag 1236419)
Gibt es freie Software die gut zum erstellen von Programmabhängigkeiten geeignet ist?

Schau mal den Link in meinem Posting oben :stupid:
(bzw. Im Zitat unten)

Zitat:

Zitat von MaBuSE (Beitrag 1236388)
  1. Systemdokumentation für Entwickler / Support
    ..., Unit-Abhänigkeiten ...
Ich hoffe das hilft Dir.
MaBuSE


Ah sorry, hab den Link total übersehen. Sieht auf jedenfall schon mal sehr interessant aus. Wie würdet ihr mir empfehlen, wie man sich am besten in fremde Klassen einzuarbeiten hat die man nicht geschrieben hat und der Programmierer davon auch nicht mehr vorhanden ist...

MaBuSE 18. Nov 2013 15:35

AW: Was gehört alles in eine richtige Dokumentation?
 
Zitat:

Zitat von Back2Code (Beitrag 1236424)
Sieht auf jedenfall schon mal sehr interessant aus.

Danke

Das Tool kannst Du Dir auch ansehen:
http://www.delphipraxis.net/internal...ct.php?t=87932

Zitat:

Zitat von Back2Code (Beitrag 1236424)
Wie würdet ihr mir empfehlen, wie man sich am besten in fremde Klassen einzuarbeiten hat die man nicht geschrieben hat und der Programmierer davon auch nicht mehr vorhanden ist...

Doc-O-matic ist ein Programm, dass den Quellcode scannt und daraus eine Dokumentation baut.
(Es gibt auch eine kostenlose Version)
Es wird auch die Struktur der Objekte sichtbar.
Richtig sinnvoll ist es allerdings erst, wenn der Programmierer auch Kommentare in den Quellcode geschrieben hat. Diese werden von Docomatic verwendet.
-> Die Delphi Hilfe ist auch mit Doc-O-Matic erstellt worden. (Zumindest die von D2007, bei den aktuellen Versionen weiss ich es nicht).

ESS Model
sieht ein wenig aus die Modelansicht von Delphi.
http://essmodel.sourceforge.net/

Dependency Walker
Um die Abhänigkeiten der Exe anzusehen:
(also welche *.dll Dateien werden benötigt)
http://www.dependencywalker.com/

BUG 18. Nov 2013 17:49

AW: Was gehört alles in eine richtige Dokumentation?
 
Zitat:

Zitat von Back2Code (Beitrag 1236424)
Wie würdet ihr mir empfehlen, wie man sich am besten in fremde Klassen einzuarbeiten hat die man nicht geschrieben hat und der Programmierer davon auch nicht mehr vorhanden ist...

Mal unabhängig von der Dokumentation: Den Pfad eines typischen Ablaufes nachvollziehen.
Dabei können auch Klassen-, Objekt- und Sequenzdiagramme entstehen, die man dann der Dokumentation hinzufügen kann. Außerdem man kann dabei auch den Quelltext kommentieren, um später daraus Dokumentation zu generieren. Allerdings sollte man dann vielleicht im Kommentar anmerken, wenn es keine gesicherte Erkenntnis darstellt.

r2c2 18. Nov 2013 20:36

AW: Was gehört alles in eine richtige Dokumentation?
 
Die Antwort auf alle Fragen in der Softwareentwicklung: "It depends" bzw. "kommt drauf an".

Zu Dokumentation hat fast jeder eine Meinung. Und je nachdem, wen man fragt wird man *sehr* unterschiedliche Antworten erhalten. Fakt ist: Eine pauschale Antwort gibt es nicht.

Demnach musst du die Frage für dich beantworten. Dabei solltest du folgendes bedenken:
- Wer soll die Doku lesen? Und was erwarten diese? Doku ist mit Sicherheit falsch, wenn sie an den Anforderungen der Stakeholder vorbei geht. Und das kann je nach Projekt sehr unterschiedlich sein.
- Doku ist kein Selbstzweck. Je mehr du davon hast, desto aufwendiger ist es, sie zu pflegen. Und veraltete Doku ist i.d.R. schlechter als gar keine.
- Je näher die Doku am Code ist (rein räumlich gesehen), desto wahrscheinlicher ist, dass sie gepflegt wird. Selbsterklärender Code > Kommentare im Code > Doku mitversioniert im selben Repository > Doku außerhalb des Repos > Doku auf Paper.
- Doku, die keine neue Info hat, ist kontraproduktiv. Doku zu dem Konstruktor, die sagt "Create erzeugt ein neues Objekt" oder noch besser "Konstruktor der Klasse" ist sinnloses Gebabbel und sollte man unterlassen.
- Je mehr Stakeholder du hast, desto mehr Doku ist nötig. Schreibst du ne API für hunderte anderer Entwickler, brauchst du mehr Doku, als wenn du der einzige bist, der das unter die Finger kriegt. Wenn sich das Entwicklerteam ständig ändert, brauchst du mehr Doku, als wenn du ein festes, unveränderliches Team hast.
- Je mehr sich der Code ändert, desto schneller veraltet Doku und desto weniger solltest du haben. Abstrakte Basisklassen musst du eher beschreiben als temporäre Implementierungen, die beim nächsten Refactoring eh wieder wegfallen. Ebenso ist es sinnvoller, die grobe Architektur zu dokumentieren (weil die sich nur langsam ändert), als irgendwelche privaten Methoden, die eh ständig umgeschrieben werden. Dokumentiere Abstraktes und Allgemeines eher als konkretes.
- Doku macht nur Sinn, wenn sie auch gelesen wird. Wenn sie zu detalliert ist und niemand den Detailgrad braucht, ist das vergeudete Zeit. Diagramme sind gut. Denn damit kann man Zusammenhänge übersichtlich zeigen, die man im Code nie sehen würde, weil man im Code quasi immer mit der Lupe vor nem monumentalen Wandteppich steht. Diagramme, die aber nicht übersichtlich sind, sind wertlos.
- Wenn du wissen willst, was gute Doku ist, guck dir schlechte an.
- Besser noch: frag die Stakeholder, die die Doku lesen sollen nach Beispielen für gute und schlechte Doku. Frag sie, was sioe ganz konkret brauchen und erwarten. Frag sie, was sie haben wollen und wie sie die Doku benutzen würden. Ganz konkret die Personen, die das betrifft. Wir hier können nur Anhaltspunkte liefern und ggf. aus dem Nähkästchen plaudern. Aber wir können hier keine Abschließende Antwort liefern, weil wir dein Projekt nicht kennen.
- ...

mfg

Christian

Bernhard Geyer 18. Nov 2013 22:10

AW: Was gehört alles in eine richtige Dokumentation?
 
Zitat:

Zitat von r2c2 (Beitrag 1236465)
Die Antwort auf alle Fragen in der Softwareentwicklung: "It depends" bzw. "kommt drauf an".
...
...
...

Besser hätte man es nicht schreiben können :thumb:

delfox 20. Nov 2013 18:08

AW: Was gehört alles in eine richtige Dokumentation?
 
Hi!

Oft schon die Basics - Zugangsdaten und bei externen die Ansprechpartner. Welche Versionen kamen zum Kunden. Welche Versionen sind wo archiviert. Dann der Quellcode. Wenn eine Datenbank genutzt wird, dann ein ER Diagramm. Welcher Aufwand wurde betrieben, damit man bei weiteren Projekten schauen kann, ob man im Budget war.

Klaus01 20. Nov 2013 18:42

AW: Was gehört alles in eine richtige Dokumentation?
 
Laut Uncle Bob ist eine Software ausreichend dokumentiert
wenn zu allen Methoden/Funktionen Testfälle/Unit-Tests vorliegen.

Grüße
Klaus

blondervolker 20. Nov 2013 20:50

AW: Was gehört alles in eine richtige Dokumentation?
 
Such einfach bei den "GROßEN"...:-D
Die haben verschiedene Textepassagen meistens... per "RA" überprüfen lassen...:lol:

DeddyH 21. Nov 2013 08:06

AW: Was gehört alles in eine richtige Dokumentation?
 
In der Doku? :shock:

blondervolker 21. Nov 2013 08:47

AW: Was gehört alles in eine richtige Dokumentation?
 
Oiiihhh,habe gepennt.:cyclops:
Naja mein Spruch unten drunter gilt leider auch für mich....:-D:-D:-D

Back2Code 27. Nov 2013 09:26

AW: Was gehört alles in eine richtige Dokumentation?
 
Gibt es hier im Forum noch Beispiele in Form von Pdf einer richtigen Software Dokumentation wo auf Funktionen / Parameter von Klassen / Methoden eingegangen wird?

Graberius 9. Dez 2013 11:53

AW: Was gehört alles in eine richtige Dokumentation?
 
Sichwort Dokumentation
Egal ob du jetzt Object Pascal, C/C++, Java, Groovy, Velocity, HTML oder JavaScript Programmierst...
Kommentier wenigstens was eine Methode oder Funktion machen soll!!!

MaBuSE 9. Dez 2013 13:25

AW: Was gehört alles in eine richtige Dokumentation?
 
Zitat:

Zitat von Back2Code (Beitrag 1237582)
Gibt es hier im Forum noch Beispiele in Form von Pdf einer richtigen Software Dokumentation wo auf Funktionen / Parameter von Klassen / Methoden eingegangen wird?

Ja,

z.B.http://docs.embarcadero.com/products...hivclwin32.pdf
( Achtung: das PDF hat 25622 Seiten und ist ca. 400 MB Groß :roll: )

Das ist die Hilfe zur VCL von D2007 als PDF.
Diese wurde die die Online-Hilfe mit Doc-O-Matic erstellt.
(Habe ich schon weiter oben beschrieben)

Apropos Delphi Dokumentation / Hilfe:
Das hier ist eine ganz gute Übersicht
http://docs.embarcadero.com/products...udio/index.php

r2c2 9. Dez 2013 20:27

AW: Was gehört alles in eine richtige Dokumentation?
 
Zitat:

Zitat von Graberius (Beitrag 1239091)
Sichwort Dokumentation
Egal ob du jetzt Object Pascal, C/C++, Java, Groovy, Velocity, HTML oder JavaScript Programmierst...
Kommentier wenigstens was eine Methode oder Funktion machen soll!!!

Besser: Schreib deinen Code so, dass klar ist was er tut. Was eine Methode tun soll, sollte ihr Name verraten. Wenn ein Kommentar nötig ist, bedeutet das in 98,57% aller Fälle, dass entweder der Name falsch ist oder die Methode tut zu viel/das falsche und sollte aufgeteilt werden bzw. etwas anderes tun.

MaBuSE 10. Dez 2013 10:48

AW: Was gehört alles in eine richtige Dokumentation?
 
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:

Zitat von r2c2 (Beitrag 1239199)
Wenn ein Kommentar nötig ist, bedeutet das in 98,57% aller Fälle, dass entweder der Name falsch ist oder die Methode tut zu viel/das falsche und sollte aufgeteilt werden bzw. etwas anderes tun.

Das sehe ich anders. :!:

Wenn man Units schreibt, die auch von anderen verwendet werden sollen, muß eine vernünftige Dokumentation her.

Beisp.:

Der Code folgender Funktion ist simpel und relativ kurz. Trotzdem gibt es im interface Teil der Unit Kommentare dazu.

Delphi-Quellcode:
// Ändert Enabled von allen Controls die AControl als Parent haben (rekursiv)
// Parameter: AForm: Formular auf dem der Container AControl liegt
//            AControl: Container, der andere Controls beinhaltet
//            AValue: True=alle werden Enabled <p>False=alle werden Disabled
procedure SetEnabledRec(AForm: TComponent; AControl: TControl; AValue: Boolean);
Im implementation teil stehen dann normalerweise keine Kommentare mehr. Es sei denn es wird etwas gemacht, was auf den ersten Blick nicht ersichtlich ist (Trick, Workarround, ...) das wird natürlich direkt im Code kommentiert.

Docomatic macht übrigends auf dem Kommentar oben bei und folgenden Text in der Systemdokumentation:

r2c2 10. Dez 2013 20:09

AW: Was gehört alles in eine richtige Dokumentation?
 
Zitat:

Zitat von MaBuSE (Beitrag 1239261)
Wenn man Units schreibt, die auch von anderen verwendet werden sollen, muß eine vernünftige Dokumentation her.

- APIs sind eine Sache für sich. Da geb ich dir recht: Die Wahrscheinlichkeit, dass dort Kommentare/Doku nötig bzw. sinnvoll ist, ist um einiges höher
- Dennoch sollten auch und gerade bei APIs die Bezeichner gut gewählt sein und die Doku im Idealfall "unnötig" machen.
- Bei APIs sollte man auch Kleinkram, Randbedingungen, etc. dokumentieren. Denn darauf kommt es an. Ein pauschales "Mach an jede Methode Doxygen/Docomatic (o.ä.) dran" ist aber kontraproduktiv. Ich hab viel zu viel Doku gelesen wie
Delphi-Quellcode:
/// Gets the value.
/// @Retrurn the value
function GetValue: Integer;
Solche Doku ist nicht nur nicht hilfreich. Sie ist dumm. Ich darf das sagen, denn ich hab sowas schon zur Genüge selbst produziert. Falsch verstandener Zwang zur Doku führt zu schlechter Doku. Die Delphi-Hilfe zur RTL, etc. zeigt, wie man gute Doku schreibt. Aber das ist auch eine API die von tausenden Entwicklern benutzt wird. Da darf kein Zweifel herrschen. Aber, wenn man sich selbst auferlegt für jede private Methode n Kommentar zu schreiben, macht man *definitiv* etwas falsch.

Zitat:

Der Code folgender Funktion ist simpel und relativ kurz. Trotzdem gibt es im interface Teil der Unit Kommentare dazu.
Wie kurz oder lang die Implementierung ist, ist egal. Zumindest für die Doku [1]. Die Frage ist, welche Infos der Aufrufer braucht.

Aber wenn du schon ein Beispiel lieferst, will ich es auch nutzen. Denn es unterstreicht meine Aussage von oben. Wenn ein Kommentar nötig ist, bedeutet das in 98,57% aller Fälle, dass entweder der Name falsch ist oder die Methode tut zu viel/das Falsche und sollte aufgeteilt werden bzw. etwas anderes tun. Sei mir nicht böse, wenn ich dein Beispiel jetzt total zerpflücke:

Delphi-Quellcode:

// Ändert Enabled von allen Controls die AControl als Parent haben (rekursiv)
Dann nenn die Methode auch so:
Delphi-Quellcode:
SetEnabledOfChildControlsRecursively
. Und schon hat sich der Kommentar erübrigt. Ja, der Name ist lang. Aber du musst ihn nur einmal tippen. Die Code-Vervollständigung sollte ja den Rest übernehmen. Dafür sparst du dir das Nachgucken in der Doku und dein Code wird deutlich besser lesbar.

Delphi-Quellcode:

// Parameter: AForm: Formular auf dem der Container AControl liegt
- Wenn das ein Formular sein muss, sollte auch der Typ TCustomForm sein.
- Und viel wichtiger: Der Parameter sollte gar nicht nötig sein (IAP).

Delphi-Quellcode:

//            AControl: Container, der andere Controls beinhaltet
- Ich bin nicht mehr ganz so firm in der VCL, aber ist es nicht TWinControl, das ein Container sein kann? Korrigiere mich, wenn ich falsch liege. In dem Fall sollte der Typ des Parameters TWinControl sein.
- Angenommen, da stände TWinControl. Damit wäre der Kommentar redundant zur Doku von TWinControl. Also ist der in der Form überflüssig.

Delphi-Quellcode:

//            AValue: True=alle werden Enabled <p>False=alle werden Disabled
Wenn der Name der Methode wie oben vorgeschlagen ist, ist der Kommentar hier auch überflüssig, denn er wiederholt die Funktionsweise der Methode. Du wolltest AValue erklären. Die Korrekte Beschreibung wäre "Der Wert auf den die Eigenschaft Enabled von allen ChildControls gesetzt werden soll". Und das sagt bereits der Name.

Delphi-Quellcode:

procedure SetEnabledRec(AForm: TComponent; AControl: TControl; AValue: Boolean);
"Rec" ist zwar kurz, aber mehrdeutig. Record? Recording? Recorded? Recently? Anders als Dec und Inc ist Rec nicht unbedingt eine allgemein bekannte Abkürzung. Und Abkürzungen in Bezeichnern, die nicht eh klar sind, sind schlecht.

Jetzt mal angenommen, das sollte Teil einer API für viele Entwickler sein. So, wie die RTL eben. In dem Fall fehlen mir wichtige Infos. Du hast die Methode nicht vollständig beschrieben:
- Wird Enabled von AControl auch gesetzt oder nur von den Kindern?
- Wird die Parent- oder die Owner-Hierarchie der Komponenten als "ist enthalten in" betrachtet. Ich gehe mal fest davon aus, du meinst letztere. Wenn du aber API schreibst, solltest du da genau sein.
- Was passiert, wenn AForm und AControl nicht zusammen passen? Wie oben geschrieben solltest du das eh verhindern. Wenn du es nicht verhindern kannst -- warum auch immer --, musst du es dokumentieren.

Man kann jetzt noch weiter überlegen. Will man tatsächlich einen Boolean übergeben? Oder will man nur alle entweder an oder aus knipsen. Wenn ersteres hinreichend selten ist, kann man auch überlegen, die Methode zu teilen:
Delphi-Quellcode:
EnableChildControlsRecursively(TWinColntrol)
und
Delphi-Quellcode:
DisableChildControlsRecursively(TWinControl)
. Das würde das noch einfacher machen, das zu benutzen. Genau genommen könnte man die Methoden im Zweifel einfach zusätzlich anbieten. Damit stellt sich die Frage gar nicht mehr. Also auf jeden Fall teilen.

Als nächstes bemerke ich, dass dadurch, dass das Recursively ausgeschrieben ist und nur noch ein Parameter da ist, das "ChildControls" fast schon wieder überflüssig wird. Also entferne ich das wieder (Refactoring ist eben ein iterativer Prozess). Damit wäre ich bei
Delphi-Quellcode:
EnableRecursively(TWinColntrol)
und
Delphi-Quellcode:
DisableRecursively(TWinControl)
. Ich glaub, jetzt bin ich endlich zufrieden.

Und jetzt vergleichen wir mal:

Delphi-Quellcode:
SetEnabledRec(Self, panel1, false);
// vs.
DisableRecursively(panel1);
mfg

Christian

P.S.: Hier ein sehr schönes Video, das zeigt, wie man u.a. durch Entfernung von unnötigen Kommentaren Code besser macht: http://www.youtube.com/watch?v=aWiwDdx_rdo


[1] Davon abgesehen sollte quasi jede Methode kurz sein. Aber das steht hier nicht zur Debatte.

MaBuSE 12. Dez 2013 12:29

AW: Was gehört alles in eine richtige Dokumentation?
 
Zitat:

Zitat von r2c2 (Beitrag 1239351)
Aber wenn du schon ein Beispiel lieferst, will ich es auch nutzen. Denn es unterstreicht meine Aussage von oben. Wenn ein Kommentar nötig ist, bedeutet das in 98,57% aller Fälle, dass entweder der Name falsch ist oder die Methode tut zu viel/das Falsche und sollte aufgeteilt werden bzw. etwas anderes tun. Sei mir nicht böse, wenn ich dein Beispiel jetzt total zerpflücke:

Nein, böse bin ich nicht, aber das war nur ein Beispiel, dass ich auf die Schnelle rausgesucht habe.
Ich hatte eine Funktion gesucht, die nicht zu viel Kommentar / Dokumentation hat.
Diese Funktion ist Teil einer Bibliothek, die schon seit mehr als 15 Jahren in Benutzung ist. Sie wird von ca. 40 Entwicklern in unzähligen Projekten verwendet.

Es traut sich einfach niemand so alte und häufig benutze Funktionen "anzufassen".

Aus diesem Grund wurde sie vor ein paar Jahren wenigstens dokumentiert ;-)

Ich glaube es gibt sogar eine Funktion
Delphi-Quellcode:
DisableRecursive(Form.Control);
, welche die alte aufruft :shock:

In deinen Ausführungen gebe ich dir größtenteils (ich bin kein Fan von sehr langen Namen) Recht.
Der Entwickler der Funktion würde das heute wahrscheinlich auch anders machen.

Trotzdem würde ich auch bei einer eindeutig benamten Funktion, mit eindeutig benamten Parametern, eine Dokumentation erwarten.
Auch wenn in der Dokumentation "nur" in Prosa das steht, was man beim Namen der Funktion erwarten würde.

Ich bin auch Fan von Änderungshistorien.
z.B: In der Funktion hat sich ab 01.01.2013 folgendes Verhalten geändert: ...
Oder auch der Autor und das Erstellungsdatum einer Funktion.
Diese Informationen bekommt man zwar auch z.B. über ein Blame in git, aber solche Dinge gehören für mich einfach in eine Dokumentation. (Zumindest bei APIs)

Furtbichler 12. Dez 2013 15:49

AW: Was gehört alles in eine richtige Dokumentation?
 
Zitat:

Zitat von r2c2 (Beitrag 1239199)
Wenn ein Kommentar nötig ist, bedeutet das in 98,57% aller Fälle, dass entweder der Name falsch ist ...

Zitat:

Zitat von MaBuSe
Das sehe ich anders. :!:

Delphi-Quellcode:
// Ändert Enabled von allen Controls die AControl als Parent haben (rekursiv)
// Parameter: AForm: Formular auf dem der Container AControl liegt
//            AControl: Container, der andere Controls beinhaltet
//            AValue: True=alle werden Enabled <p>False=alle werden Disabled
procedure SetEnabledRec(AForm: TComponent; AControl: TControl; AValue: Boolean);

Also, ich würde mal sagen, der Name 'SetEnabledRec' ist Schrott. Im Clean-Code sollte er so heißen (z.B.):
Delphi-Quellcode:
SetEnabledOfChildControlsOnForm(aForm : TComponent; aParentControl : TControl; aValue : Boolean);
Wozu also jetzt noch Kommentare? ;-)

DeddyH 12. Dez 2013 15:55

AW: Was gehört alles in eine richtige Dokumentation?
 
Nicht
Delphi-Quellcode:
SetChildControlsOnFormEnabledRecursively(aForm: TCustomForm; aParentControl: TWinControl; Enabled: Boolean);
:?:

MaBuSE 12. Dez 2013 16:04

AW: Was gehört alles in eine richtige Dokumentation?
 
Zitat:

Zitat von Furtbichler (Beitrag 1239604)
Also, ich würde mal sagen, der Name 'SetEnabledRec' ist Schrott. Im Clean-Code sollte er so heißen (z.B.):
Delphi-Quellcode:
SetEnabledOfChildControlsOnForm(aForm : TComponent; aParentControl : TControl; aValue : Boolean);
Wozu also jetzt noch Kommentare? ;-)

Ich möchte dazu nur folgendes sagen:
  1. Hat r2c2 das in seinem sehr ausführlichen Beitrag schon wirklich nett erklärt.
  2. In Deinem Namen nicht erkennbar ist, dass rekursiv die Eigenschaft Enabled aller untergeordneten Elemte gesetzt werden.
  3. Habe ich geschrieben, warum das so ist, und ich auch nicht glücklich damit bin.
  4. Werden die Kommentare zur Erstellung der Dokumentation verwendet.
    Und ich bin immer noch der Meinung, dass in der Beschreibung einer API auch eindeutige Funktionen dokumentiert werden sollten.
    z.B. die Funktion abs()-> http://docwiki.embarcadero.com/Libra.../de/System.Abs

Furtbichler 12. Dez 2013 19:30

AW: Was gehört alles in eine richtige Dokumentation?
 
...Hier stand der Beginn einer kleinen Auseinandersetzung, der jedoch von MaBuSe per PN im Keim erstickt wurde, weswegen das auch nicht hierhin gehört...

Ich fand es nur lustig, das r2c2's (korrekte) Aussage, sprechende Namen seien besser als Kommentare neben dein Paradebeispiel schlechter Nomenklatur zu stellen. Ich meine, das muss Dir doch selbst aufgefallen sein, das der Name ähem.. du weisst schon. Auto-an-Wand.

Übrigens, falls es dich interessiert: Ein Methodenname darf gerade nicht den Algorithmus ('Rekursiv') wiederspiegeln, sondern kurz und knapp erklären, was die Methode anstellt. 'SetEnabledRec' ist Schrottungenau, 'SetEnabledStateOfChildControls' nicht. Ob das rekursiv, iterativ oder sonst was ist, ist irrelevant. Wir können natürlich auch richtig albern werden, und das Teil
'SetEnabledStateOfChildAndTheirChildsAndTheirChild sAndSoOnControls' nennen, aber -hey- WTF.

Eine API zu dokumentieren, ist notwendig und vollkommen unabhängig von meinem Einwand (ich schrieb eigentlich nichts davon).

WEnn Du deinen API-Funktionen, oder wer auch immer die so genannt hat, einfach aussagekräftige Namen gibst, wird eine Dokumentation schnell überflüssig. Das merkst Du daran, das Du für die Beschreibung der Methode fast genau die Worte verwendest, die im Namen der Methode selbst stecken:
Delphi-Quellcode:
// Creates a Form of type aFormClass
procedure UIManager.CreateForm(aFormClass :TFormClass)
Es gibt Kollegen, die sich weigern das so hinzuschreiben. Weil es so einfach nur kreuzdämlich ist. Und eine Methode nur um des Kommentieren willens zu kommentieren, erinnert mich an die Schildbürger.

Dessenungeachtet sind Konstrukte wie dieses 'Ich setze Enabled gleich für alle Childcontrols' eigentlich kein Fall für eine API, denn eine API soll ja nur die Basisfunktionen bereitstellen und keine Superdupersonderichmachdasallesfürdich-Funktionen. Aber das steht auf einem anderen Blatt.

--- und hier stand auch noch überflüssiges Zeugs---

r2c2 12. Dez 2013 20:20

AW: Was gehört alles in eine richtige Dokumentation?
 
Zitat:

Zitat von MaBuSE (Beitrag 1239551)
Es traut sich einfach niemand so alte und häufig benutze Funktionen "anzufassen".

Das macht APIs so schwer: Wenn man sie rausgibt, bedeutet das gleichzeitig, dass man sie partiell in Zement giest. Eine API nachträglich zu ändern ist nicht mehr so einfach möglich. Aber es gibt Möglichkeiten: Schreib ne schöne, neue Methode und mach die alte deprecated. Und in 10 Jahren kannst du vielleicht drangehen, die alte zu entfernen. Das ist langwierig, ja. Aber, wenn du das jetzt nicht tust, kannst du dir sicher sein, dass du die Methode selbst in 10 Jahren auch nicht los sein wirst.

Zitat:

Aus diesem Grund wurde sie vor ein paar Jahren wenigstens dokumentiert ;-)
Schonmal besser als nichts, ja. Aber das ist natürlich keine Heilung. Nur ein Pflaster.

Zitat:

Ich glaube es gibt sogar eine Funktion
Delphi-Quellcode:
DisableRecursive(Form.Control);
, welche die alte aufruft :shock:
Guggemalda. Dann fehlt jetzt nur noch das deprecated.

Zitat:

Trotzdem würde ich auch bei einer eindeutig benamten Funktion, mit eindeutig benamten Parametern, eine Dokumentation erwarten.
Auch wenn in der Dokumentation "nur" in Prosa das steht, was man beim Namen der Funktion erwarten würde.
Einfache Frage: Warum?

Zitat:

Ich bin auch Fan von Änderungshistorien.
z.B: In der Funktion hat sich ab 01.01.2013 folgendes Verhalten geändert: ...
Oder auch der Autor und das Erstellungsdatum einer Funktion.
Diese Informationen bekommt man zwar auch z.B. über ein Blame in git, aber solche Dinge gehören für mich einfach in eine Dokumentation. (Zumindest bei APIs)
- Kommentare sind keine schlechte Versionsverwaltung. Kommentare sind *etwas anderes*. Da die selben Infos rein zu packen, macht keinen Sinn.
- "gehört für mich einfach rein" ist kein Grund. Wenn ich bemerke, dass ich für eine Meinung keine Gründe habe, stelle ich diese in Frage. Ich kann das nur empfehlen, denn es ist augenöffnend.
- Was bei APIs sinnvoll sein kann (aber nicht muss): Dokumentieren, ab welcher Version etwas etwas neu eingeführt worden ist. So kann man beispielsweise nachgucken, ob Code noch mit ner alten Bibliothek laufen würde. Sowas wie "Läuft meine Komponente auch noch unter Delphi 7?"
- Ähnlich: Breaking changes: Läuft mein Code mit der neuen API-Version noch?

Warum sage ich eigentlich immer "sinnvoll sein kann"? Ganz einfach: Wie in meinem ersten Beitrag hier im Thread geschrieben, kommt es immer auf die Stakeholder drauf an. Doku machen wir aus einem Grund. Nämlich, dass sie gelesen wird. Doku macht Arbeit. Arbeit zu schreiben, Arbeit zu pflegen und ja, auch Arbeit zu lesen. Wenn ich jetzt Doku habe, die keinen Mehrwert bietet, sondern genauso schlau bin, nachdem ich sie gelsenen habe, wie zuvor, hätte ich mir gar nicht erst die Mühe machen müssen, sie zu lesen. Es ist frustrierend, Doku zu lesen, die keinen Mehrwert bietet und nich frustrierender, wenn man sich vor Augen hält, dass jemand Zeit darin investiert hat, mir dadurch Zeit zu rauben...

Zitat:

Und ich bin immer noch der Meinung, dass in der Beschreibung einer API auch eindeutige Funktionen dokumentiert werden sollten.
z.B. die Funktion abs()-> http://docwiki.embarcadero.com/Libra.../de/System.Abs
Was ein Beispiel für eher weniger gute Doku ist. Was man von einer *wirklich* guten Doku erwarten würde:
- Dass sie auch Leute verstehen, die nicht wissen, dass "Absolutwert" ein Synonym für die Betragsfunktion ist
- Dass sie keine Infos wiederholen, die in der Signatur stehen ("X ist ein Ausdruck des Typs Integer oder Real.")
- Dass Randfälle erklärt werden. Was passiert, wenn man NaN übergibt? Exception oder auch NaN? Das wären Infos, die einen Mehrwert bieten.

Zitat:

Zitat von Furtbichler
Übrigens, falls es dich interessiert: Ein Methodenname darf gerade nicht den Algorithmus ('Rekursiv') wiederspiegeln, sondern kurz und knapp erklären, was die Methode anstellt.

Hier ist "Recursively" Teil der Funktionsbeschreibung. Es werden auch Kindeskinder betrachtet. Das ist keine Aussage über den Algo, der dahinter steckt. Auch der kann rekursiv sein (und es es hier vermutlich auch). Aber er muss es nicht. Fakt ist, dass "rekursiv" nicht nur einen Algo beschreibt, sondern auch eine funktionale Anforderung sein kann.

Furtbichler 12. Dez 2013 20:47

AW: Was gehört alles in eine richtige Dokumentation?
 
Zitat:

Zitat von r2c2 (Beitrag 1239640)
Zitat:

Trotzdem würde ich auch bei einer eindeutig benamten Funktion, mit eindeutig benamten Parametern, eine Dokumentation erwarten.
Auch wenn in der Dokumentation "nur" in Prosa das steht, was man beim Namen der Funktion erwarten würde.
Einfache Frage: Warum?

Weil erstens eine System/API-Doku vollständig sein sollte und zweitens eine Doku erweitert werden sollte. Keine Doku wird selten erweitert. Eine API, die aus elementaren Operationen besteht, die aussagekräftige Namen haben ist selbsterklärend. Das ist die Krux bei guten API: Einerseits gehört die Doku dazu, weil dort eben auch steht, was für Seiteneffekte es gibt, Beispiele, Exceptions, der ganze Kram eben, Und da sieht es eben blöd aus, wenn in der Doku steht: "CreateForm: Guess what the function does..." oder "The name says it all" (obwohl, warum eigentlich nicht).

Ach, und die Sache mit der Rekusivität im Methodennamen kann man so sehen, muss man nicht, aber dein Einwand ist schon ok.

MaBuSE 12. Dez 2013 21:17

AW: Was gehört alles in eine richtige Dokumentation?
 
Zitat:

Zitat von r2c2 (Beitrag 1239640)
Aber es gibt Möglichkeiten: Schreib ne schöne, neue Methode und mach die alte deprecated.

Das ist eine gute Idee, werde ich mal hier im Team anregen.

Zitat:

Zitat von r2c2 (Beitrag 1239640)
Zitat:

Trotzdem würde ich auch bei einer eindeutig benamten Funktion, mit eindeutig benamten Parametern, eine Dokumentation erwarten.
Auch wenn in der Dokumentation "nur" in Prosa das steht, was man beim Namen der Funktion erwarten würde.
Einfache Frage: Warum?

Es kommt immer darauf an, für wen die Dokumentation ist.
Dokumentation ist aufwendig, also möchte man nicht für jede Zielgruppe eine eigene Doku schreiben.
Man erstellt Doku, die von mehreren Zielgruppen verwendet werden kann.

z.B. von Prüfern der externen Revision

Die Dokumentation einer API muss (z.B. für die Prüfer) verschiedene Kriterien erfüllen.

z.B. wird Erwartet, dass Funktionsänderungen in den Klassen / Methoden mit Datum und Version beschrieben werden.
(ab v2.0.1 (01.01.2013) wird nicht mehr kaufmännisch, sondern mathematisch gerundet.)

Zitat:

Zitat von r2c2 (Beitrag 1239640)
Zitat:

Ich bin auch Fan von Änderungshistorien.
- Kommentare sind keine schlechte Versionsverwaltung. Kommentare sind *etwas anderes*. Da die selben Infos rein zu packen, macht keinen Sinn.

Da gebe ich dir Recht.
Aber, wenn eine Funktion (nennen wir sie GetDefaultColor) eine Farbe zurückgibt (z.B. Blau) und das auch dokumentiert ist, sich ändert und nun eine andere Farbe zurückgibt (z.B. Grün), dann würde ich mir in der Doku folgendes wünschen:

Code:
...gibt die Farbe Blau zurück.
...ab v2.0 gibt die Funktion die Farbe Grün zurück.
Das macht vor allem dann Sinn, wenn aus Gründen der Wartbarkeit nur eine (aktuelle) Doku vorgehalten wird, die API aber leider auch in älteren Versionen verwendet wird.

Zitat:

Zitat von r2c2 (Beitrag 1239640)
- "gehört für mich einfach rein" ist kein Grund. Wenn ich bemerke, dass ich für eine Meinung keine Gründe habe, stelle ich diese in Frage. Ich kann das nur empfehlen, denn es ist augenöffnend.

Auch hier gebe ich Dir Recht.
Ich bin auch kein Fan von "Warum?" -> "Das haben wir schon immer so gemacht!"

Zitat:

Zitat von r2c2 (Beitrag 1239640)
Warum sage ich eigentlich immer "sinnvoll sein kann"? Ganz einfach: Wie in meinem ersten Beitrag hier im Thread geschrieben, kommt es immer auf die Stakeholder drauf an. Doku machen wir aus einem Grund. Nämlich, dass sie gelesen wird. Doku macht Arbeit. Arbeit zu schreiben, Arbeit zu pflegen und ja, auch Arbeit zu lesen. Wenn ich jetzt Doku habe, die keinen Mehrwert bietet, sondern genauso schlau bin, nachdem ich sie gelsenen habe, wie zuvor, hätte ich mir gar nicht erst die Mühe machen müssen, sie zu lesen. Es ist frustrierend, Doku zu lesen, die keinen Mehrwert bietet und nich frustrierender, wenn man sich vor Augen hält, dass jemand Zeit darin investiert hat, mir dadurch Zeit zu rauben...

Stimmt genau.

Um die Arbeit an der Doku zu minimieren, {zweckent|ver}wenden wir die Kommentare im Quelltext (im interface-Teil) zur Erstellung der Systemdokumentation.
Das hat sich als praktikabel erwiesen.

Das ist Geschmackssache.


Zitat:

Zitat von r2c2 (Beitrag 1239640)
Zitat:

Und ich bin immer noch der Meinung, dass in der Beschreibung einer API auch eindeutige Funktionen dokumentiert werden sollten.
z.B. die Funktion abs()-> http://docwiki.embarcadero.com/Libra.../de/System.Abs
Was ein Beispiel für eher weniger gute Doku ist. Was man von einer *wirklich* guten Doku erwarten würde:
- Dass sie auch Leute verstehen, die nicht wissen, dass "Absolutwert" ein Synonym für die Betragsfunktion ist
- Dass sie keine Infos wiederholen, die in der Signatur stehen ("X ist ein Ausdruck des Typs Integer oder Real.")
- Dass Randfälle erklärt werden. Was passiert, wenn man NaN übergibt? Exception oder auch NaN? Das wären Infos, die einen Mehrwert bieten.

Melde es bei Embacadero ;-)

Ich scheine bei der Wahl meiner Beispiele kein glückliches Händchen zu haben.

Zitat:

Zitat von r2c2 (Beitrag 1239640)
Zitat:

Zitat von Furtbichler
Übrigens, falls es dich interessiert: Ein Methodenname darf gerade nicht den Algorithmus ('Rekursiv') wiederspiegeln, sondern kurz und knapp erklären, was die Methode anstellt.

Hier ist "Recursively" Teil der Funktionsbeschreibung. Es werden auch Kindeskinder betrachtet. Das ist keine Aussage über den Algo, der dahinter steckt. Auch der kann rekursiv sein (und es es hier vermutlich auch). Aber er muss es nicht. Fakt ist, dass "rekursiv" nicht nur einen Algo beschreibt, sondern auch eine funktionale Anforderung sein kann.

Genau so war es auch gemeint, in der Mengenlehre wird der Begriff Rekursiv auch verwendet.
Wobei das auch ungenau formuliert ist, da es ja nur bedeutet, dass die Menge berechenbar ist. (wenn ich mich recht erinnere)
Aber ich hoffe man versteht es trotzdem.

r2c2 12. Dez 2013 21:39

AW: Was gehört alles in eine richtige Dokumentation?
 
Zitat:

Zitat von Furtbichler (Beitrag 1239643)
Zitat:

Zitat von r2c2 (Beitrag 1239640)
Zitat:

Trotzdem würde ich auch bei einer eindeutig benamten Funktion, mit eindeutig benamten Parametern, eine Dokumentation erwarten.
Auch wenn in der Dokumentation "nur" in Prosa das steht, was man beim Namen der Funktion erwarten würde.
Einfache Frage: Warum?

Weil erstens eine System/API-Doku vollständig sein sollte und zweitens eine Doku erweitert werden sollte. Keine Doku wird selten erweitert. Eine API, die aus elementaren Operationen besteht, die aussagekräftige Namen haben ist selbsterklärend. Das ist die Krux bei guten API: Einerseits gehört die Doku dazu, weil dort eben auch steht, was für Seiteneffekte es gibt, Beispiele, Exceptions, der ganze Kram eben, Und da sieht es eben blöd aus, wenn in der Doku steht: "CreateForm: Guess what the function does..." oder "The name says it all" (obwohl, warum eigentlich nicht).

Ein gutes Tool macht dir Doku aus reinem Code ohne Kommentaren. Du schreibst also nur die Kommentare, die eien Mehrwert bieten und den Rest macht das Tool. Dadurch wird die Doku vollständig. Es mag merkwürdig aussehen, dass da "etwas fehlt". Ich fühle auch so. Aber, wenn alles, was mir einfällt, eine Paraphrase ist, die ich schreiben und andere Lesen müssen, lass ich sie lieber doch gleich weg. Doku muss kein Kunstwerk sein. Sie muss den Stakeholdern helfen.

Zitat:

Es kommt immer darauf an, für wen die Dokumentation ist.
Dokumentation ist aufwendig, also möchte man nicht für jede Zielgruppe eine eigene Doku schreiben.
Man erstellt Doku, die von mehreren Zielgruppen verwendet werden kann.
Klar.

Zitat:

z.B. von Prüfern der externen Revision
Und die erwarten, dass Bezeichnernamen paraphrasiert werden? Wenn ja, sollte man die mal nach dem Warum fragen.

Zitat:

z.B. wird Erwartet, dass Funktionsänderungen in den Klassen / Methoden mit Datum und Version beschrieben werden.
(ab v2.0.1 (01.01.2013) wird nicht mehr kaufmännisch, sondern mathematisch gerundet.)
Und das kann, je nach Stakeholder, ja ein Mehrwert sein. Da hast du vollkommen recht. Nur Paraphrasen haben eben keinen Mehrwert. Und das war meine Aussage.

Zitat:

Um die Arbeit an der Doku zu minimieren, {zweckent|ver}wenden wir die Kommentare im Quelltext (im interface-Teil) zur Erstellung der Systemdokumentation.
Das hat sich als praktikabel erwiesen.
Und das ist auch gar nicht zu beanstanden. Je näher die Doku am Code ist, desto größer ist die Wahrscheinlichkeit, dass sie auch gepflegt wird, d.h., aktuell und richtig ist. Das ist so schon schwer genug. Wenn das in nem externen Word-Dokument wäre (auch sowas hab ich schon gesehen), ist das ungleich schwieriger. So weit weg vom Code kannst du nur Zeug dokumentieren, das sich sehr langsam ändert. Also beispielsweise Architekturzeug. Das geht noch einigermaßen. Dann aber versioniert im selben Repository. Wenn du anfängst, einzelne Methoden per Word zu dokumentieren oder vielleicht noch irgendwie auf Papier zu drucken, hast du i.d.R. kaum eine Chance, das aktuell zu halten.

himitsu 12. Dez 2013 23:12

AW: Was gehört alles in eine richtige Dokumentation?
 
Zitat:

Zitat von MaBuSE (Beitrag 1239644)
Aber, wenn eine Funktion (nennen wir sie GetDefaultColor) eine Farbe zurückgibt (z.B. Blau) und das auch dokumentiert ist, sich ändert und nun eine andere Farbe zurückgibt (z.B. Grün), dann würde ich mir in der Doku folgendes wünschen:

Code:
...gibt die Farbe Blau zurück.
...ab v2.0 gibt die Funktion die Farbe Grün zurück.

Sowas hatte ich mir vor vielen Jahren mal von Emba gewünscht.

So wie man es vom MSDN kennt, also eine Angabe für welche Version das gültig ist.
Denn vorallem für Komponentenentwickler wäre das bestimmt eine schöne Erleichterung.
(eventuell das Alte auch nicht sofort löschen ... nur in der aktuellen Hilfe nicht direkt verlinken)

Graberius 13. Dez 2013 11:52

AW: Was gehört alles in eine richtige Dokumentation?
 
Zitat:

Zitat von r2c2
Besser: Schreib deinen Code so, dass klar ist was er tut. Was eine Methode tun soll, sollte ihr Name verraten. Wenn ein Kommentar nötig ist, bedeutet das in 98,57% aller Fälle, dass entweder der Name falsch ist oder die Methode tut zu viel/das falsche und sollte aufgeteilt werden bzw. etwas anderes tun.

Da ich die Kommentar-Debatte ausgelöst habe werde ich sie hoffentlich auch beenden.
Mir ist auch klar das man einfache Methoden nicht Kommentieren muss/sollte um nicht einen Unleserlichen Kommentar zu gestallten.
Aber einfach mal so ne kleine Frage in den Raum...
Wie gut könnt ihr sehr schnell etwas ändern wenn eine Methode geschrieben wurde ohne das irgendwer es für nötig gefunden hat
zu erklären woher z.B. eine GUID (in Intrexx Standard und in Delphi auch verfügbar)stammt?
Kann sein das man die GUID schnell findet aber ich wünsche viel Vergnügen beim Suchen wenn die GUID zerschossen wurde...
Dann hat man das unschöne Vergnügen folgende Dinge zu tun:
  • Denn ersteller Suchen
  • Denn gesammten SourceCode durchsuchen
  • Die gesammte Applikation durchgehen
Bei kleinen Sachen ist das ja nicht unbedingt ein grosser Aufwand aber wenn man eine Komplexe
Applikation vor sich hat würde man sich Wünschen man könnte nur dem Beschrieb vom Kommentar folgen :wall:

Das Mass halten gehört wohl zu denn Schwierigsten Herausforderungen des Lebens...
Von daher ist niemand Perfekt aber ein Code komplett ohne Kommentar zu erstellen ist ein (schwer)Verbrechen

Furtbichler 13. Dez 2013 23:20

AW: Was gehört alles in eine richtige Dokumentation?
 
Zitat:

Zitat von r2c2 (Beitrag 1239645)
Ein gutes Tool macht dir Doku aus reinem Code ohne Kommentaren.

Das bezweifle ich, das es ein Tool gibt, das mir eine Routine dokumentiert, ohne das ich Kommentare schreibe. Was so ein Tool macht, ist den Methodennamen und die Parameter + Typen in ein Template zu klatschen und -ja- die von mir geschriebenen Kommentare da irgendwie reinzupflastern. Altbekannt und banal.

Was ich meine, ist die Frage, ob selbsterklärende API-Funktionen eines redundanten Kommentares bedarf. Wir hatten das Thema lustigerweise heute im Team und als ich anmerkte: "Ja 'CreateForm' mit 'Creates a Form' zu dokumentieren, ist heute blödsinnig, aber Kommentare leben und ein existierender Kommentar wird eher erweitert, als ein nicht vorhandener" Die Argumentation stieß auf Zustimmung

r2c2 14. Dez 2013 11:49

AW: Was gehört alles in eine richtige Dokumentation?
 
Zitat:

Zitat von Graberius (Beitrag 1239674)
Wie gut könnt ihr sehr schnell etwas ändern wenn eine Methode geschrieben wurde ohne das irgendwer es für nötig gefunden hat
zu erklären woher z.B. eine GUID (in Intrexx Standard und in Delphi auch verfügbar)stammt?
Kann sein das man die GUID schnell findet aber ich wünsche viel Vergnügen beim Suchen wenn die GUID zerschossen wurde...
Dann hat man das unschöne Vergnügen folgende Dinge zu tun:
  • Denn ersteller Suchen
  • Denn gesammten SourceCode durchsuchen
  • Die gesammte Applikation durchgehen
Bei kleinen Sachen ist das ja nicht unbedingt ein grosser Aufwand aber wenn man eine Komplexe
Applikation vor sich hat würde man sich Wünschen man könnte nur dem Beschrieb vom Kommentar folgen :wall:

Versteh nicht, was du meinst.

Zitat:

Von daher ist niemand Perfekt aber ein Code komplett ohne Kommentar zu erstellen ist ein (schwer)Verbrechen
Ich würde es anders sagen: Es sollte das Ziel sein, Code zu schreiben, der keines Kommentars bedarf. Allerdings ist das ein Ziel, das quasi nie vollständig zu erreichen ist.

Zitat:

"Ja 'CreateForm' mit 'Creates a Form' zu dokumentieren, ist heute blödsinnig, aber Kommentare leben und ein existierender Kommentar wird eher erweitert, als ein nicht vorhandener" Die Argumentation stieß auf Zustimmung
Ein falscher Kommentar ist schlechter als ein nicht vorhandener. Zuerst wirst du in die Irre geleitet, produzierst Bugs und verplemperst Zeit. Dann fängst du an, den Kommentaren zu misstrauen und prüfst alles selbst nach. Das aber macht die Kommentare wiederum wertlos, weil alles selbst nachprüfen, kannst du auch ohne Kommentare. Deshalb ist es wichtig, dass Kommentare gepflegt werden.

Je mehr Kommentare da sind, desto mehr Arbeit ist es sie zu pflegen und desto weniger wird es gemacht. Deshalb ist es nicht gut, unnötige Kommentare zu haben. Zudem: Wenn du nur eine Stelle hast, die du nicht selbsterklärend machen konntest, sodass dort ein Kommentar nötig ist, dann wird dieser eine Kommentar herasusstechen. Man merkt gleich: "Oh, das ist eine komplizierte Stelle, da muss ich aufpassen, wenn ich was ändere und ich muss den Kommentar lesen und ggf. anpassen". Wenn du überall Kommentare hast, hast du diesen Effekt nicht.

Kommentare sind wie Antibiotika. Wenn du sie brauchst, sind sie gut und helfen dir. Es ist aber keine gute Idee, präventiv täglich welche zu nehmen, wenn man sie nicht brauchst. Kommentare sind nicht inhärent gut. Sie sind ein manchmal nicht zu umgehendes Übel.


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:13 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz