Java Docs

Ostkreuz

Aktives Mitglied
Hallo ist zwar eigentlich leicht, aber was genau soll ich für die Setter und Getter in die Java Docs schreiben?
 

Anhänge

  • Screenshot_5.png
    Screenshot_5.png
    9,4 KB · Aufrufe: 2

mihe7

Top Contributor
Für so etwas schreibe ich gar keine JavaDocs aber wenn man will:
Java:
/**
 * Sets the first name of ... (z. B. this Person)
 *
 * @param firstName  first name (of this Person), may be {@code null}.
 */
public void setFirstName(String firstName) { ... }

/** 
 * Returns the first name (of this Person)
 *
 * @return String containing the first name (of this Person), might be {@code null}.
 */
public String getFirstName() { ... }
 
Y

yfons123

Gast
die setter und getter javadocs kannst du dir automatisch generieren lassen durch tools

für public methoden die keine getter setter sind macht es sinn sich javadocs anzulegen
 

LimDul

Top Contributor
Zu Javadoc noch eine Anmerkung.

Im reinsten Sinne von Clean Code ist jeder Kommentar den man schreibt ein Eingeständnis, dass man es nicht geschafft hat verständlichen Code zu schreiben. Grundsätzlich mal zu lernen, wie man Javadoc schreibt ist nicht schlecht. Aber wenn man das Gefühl hat, dass Javadoc was man schreibt ist im Prinzip nur ein Satz rund um Methodennamen / Parameter / Rückgabewert und bringt eigentlich keinen Mehrwert, dann ist das kein Fehler. Im Gegenteil, dann hat man alles richtig gemacht hat.

Das heißt nicht das Javadoc überflüssig ist - insbesondere wenn man Schnittstellen für andere bereitstellt sollte man sowas immer schreiben. Und oft gibt es auch Infos, die nicht aus der Methodensignatur hervorgehen, dann ist es auch gut die zu erwähnen. Aber das Ziel sollte sein, Kommentare möglichst überflüssig zu machen und sich im Code auszudrücken.
 

Neumi5694

Top Contributor
Was rein sollte: Das Verhalten. Wenn ein Wert irgendwelchen Beschränkungen unterliegt, dann sollte dokumentiert werden, was die Methode damit macht.
Wenn z.B. ein Wert auf min und max korrigiert wird, dann sollte das im Setter stehen. Im Getter sollte entsprechend im Return-Bereich Zahlenbereich des Wertes angegeben werden.
Kurz: Der Benutzer dieser Methoden sollte sie nicht erst ausprobieren müssen, um zu sehen, was passiert.

Persönliche Vorgehensweise (und wirklich, es ist genau das): Was ich mir angewöhnt habe, ist, bei Get/Set Paaren für Attribute den Header der Methoden beider Methoden gleich zu lassen. Also kein "Sets the ..." und "Returns the ..." sondern einfach nur die Beschreibung des Attributs. Das irgendwas gesetzt oder returned wird, schreib ich dann in die entsprechenden @param oder @Return

Dokumentation im Code finde ich grundsätzlich nicht schlecht, vor allem bei komplexen längeren Algorithmen mit vielen Abhängigkeiten. Es ist eine Sache zu erkennen, WAS da gemacht wird, das WARUM ist zwei Jahre später aber oft viel wichtiger. Man kann natürlich auch den gesamten Algorithmus im Javadoc dokumentieren.
Wenn ich so was habe, mach ich meistens beides. Bevor ich eine Methode schreibe, wird zuerst mal im JAvadoc die Doku geschrieben, was sie machen soll. Das "wie" wird zumindest teilweise hinzugefügt, Referenzen (@see) auf andere bereits existierende public Methoden. Diese Doku wird dann in die einzelnen Punkte zerlegt, in die Methode geschrieben. Dann wird entschieden, was davon in Methoden auszulagern wäre und was nicht. Dann wird jeder einzelne Punkt umgesetzt. Die Beschreibung bleibt im oft im Code stehen, auch wenn eine Methode mit lesbarem Namen aufgerufen wird, damit man beim Lesen des Codes der Beschreibung im Header folgen kann.
Da ich oft mehrere Jahre nach Implementierung nochmal ran muss und für bestimmte Kunden Änderungen vornehmen soll, steht auch dabei, warum ich bestimmte Umsetzungsentscheidungen getroffen habe, manchmal auch, welches Ticket für den entsprechenden Block verantwortlich ist, worauf achtzugeben ist (denn sonst gibt's in Folge ein Bugticket eines anderen Kunden, der das genau so haben wollte, was ich grad geändert hab).
Doku und Entwicklung gehen Hand in Hand. In früheren Zeiten (assembler) war es nicht unüblich, jede einzelne Zeile zu dokumentieren und sei sie noch so eindeutig.
 
Zuletzt bearbeitet:

KonradN

Super-Moderator
Mitarbeiter
die setter und getter javadocs kannst du dir automatisch generieren lassen durch tools
schreikrampf

Ja, das kann man machen. Es gibt da tolle AddOns. Auch für Visual Studio. Microsoft hat da mal die Neuentwicklung der Windows Workflow Foundation (WWF) an Entwickler in Indien gegeben. Der Code wurde wohl auf die Kommentare geprüft, also hat man ein solches AddOn verwendet.

Die ganze Dokumentation der WWF 4.0 auf MSDN war dann zu 100% autogeneriert.

Die Freude bei Entwicklern kann man gar nicht gut genug beschreiben!

Einfach mal vergleichen, was denn so in den JavaDoc einer Klasse so alles steht. Und dann vorstellen, das wäre alles weg.

Also da dann ggf. überlegen, ob man nicht mit dem Team diskutiert, dass man ganz auf JavaDoc verzichtet. Denn das führt JavaDoc schlicht ins Absurde. Code, der einfach nur generiert wird ist Platzverschwendung. Und das gleiche gilt für Kommentare.
 

Neumi5694

Top Contributor
Code, der einfach nur generiert wird ist Platzverschwendung. Und das gleiche gilt für Kommentare.
Java:
/**
 * This sets the name
 * @param name the name
 */
public setName(String name){}

/**
 * This returns the name
 * @return the name
 */
public String getName(){}
Auto-Generierung ist doch Spitze!
 

KonradN

Super-Moderator
Mitarbeiter
Also ich bereite gerade eine kleine Video Serie zu Clean Code vor, wo ich eine EInführung in TDD und auch statische Codeanalyse und so mache ...

Da ich in dem Video natürlich nicht 2 Stunden zeigen will, wie ich Kommentare schreibe, nutze ich da ein JavaDoc Plugin, das mir Kommentare gerzeugt. So Kommentare sind hilfreich, da ja die Entwicklungsumgebung diese einblendet. Beispiel:
Bildschirm­foto 2022-12-12 um 11.02.06.png
Der Kommentar "The constant MIN_VALUE." bringt wirklich viel Mehrwert.
a) MIN_VALUE ist natürlich eine Konstante - sonst wäre es ja minValue ...
b) Die Deklaration hat IntelliJ auch eingeblendet.

Und da macht natürlich ein anderer Kommentar Sinn. Halt etwas wie: "FizzBuzz Werte sind nur für ganze Zahlen größer 1 definiert." Es ist etwas einfaches, da etwas sinnvolles zu sagen.

Bei Getter / Setter wird es etwas schwieriger. Da läuft es teilweise wirklich auf etwas hinaus, das auch automatisch generiert werden kann. Aber das sind Ausnahmen.

Das Problem, wenn sowas generiert wird: Man packt es nicht an und macht daher nichts. Damit fehlt dann auch eine Information a.la. "Der Name darf nicht leer oder null sein" (So es ein Pflichtwert ist). Das wird im Code sichtbar sein, da eine @NonNull oder @NotNull Annotation vorhanden ist (hoffentlich! Aber wen interessiert statische Codeanalyse schon. Erst wenn man zu Kotlin gewechselt ist, dann ist Java scheiße, weil es da mit null ja so große Probleme hat ... Aber bei Kotlin hat man natürlich auch keine statische Codeanalyse ... wenn also eine neue Sprache Kotlin ablöst, dann ist Kotlin scheiße, weil es irgend etwas nicht prüft, das ja die neue Sprache als festen Bestandteil hat!).

Getter / Setter kann man auch einfach gar nicht schreiben. Dann nutzt man Lombok und hat dieses Problem erst gar nicht. Das würde ich bevorzugen gegenüber der Ich generiere einfach alles ... Code und Kommentare kann ja alles die IDE generieren.

Ja, ich nutze es auch, aber ich überarbeite das dann. So wie die IDE mir auch einen Rahmen erzeugt, wenn ich /** eintippe. Das ist nur ein erweiterter Rahmen, was da generiert wird.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
H .java Dateien in Eclipse einbinden und ausführen Java Basics - Anfänger-Themen 1
onlyxlia Schlüsselworte Was meint man mit "einen Typ" in Java erstellen? Java Basics - Anfänger-Themen 2
O Java Kara geschweifte Klammern Java Basics - Anfänger-Themen 2
richis-fragen Mausrad logitech kann links und rechts klick wie in java abragen. Java Basics - Anfänger-Themen 15
XWing Java Klssenproblem Java Basics - Anfänger-Themen 4
R Umgebungsvariable java -cp gibt immer Java-Hilfe... Java Basics - Anfänger-Themen 3
farbenlos Csv Datei in Java einlesen Java Basics - Anfänger-Themen 18
F TableModelListener: java.lang.ArrayIndexOutOfBoundsException: 132 Java Basics - Anfänger-Themen 3
G Java 8 - Support-Ende Java Basics - Anfänger-Themen 7
T Java Weihnachtsbaum + Rahmen Java Basics - Anfänger-Themen 1
N Will mit Java anfangen Java Basics - Anfänger-Themen 13
Ü Java Array - Buchstaben als Zahlen ausgeben Java Basics - Anfänger-Themen 22
M Java Iterator Verständnisfrage Java Basics - Anfänger-Themen 6
M Java Mail Programm Java Basics - Anfänger-Themen 4
Sniper1000 Java 391 für Windows Java Basics - Anfänger-Themen 37
J Java long- in int-Variable umwandeln Java Basics - Anfänger-Themen 6
JaZuDemNo Java im Studium Java Basics - Anfänger-Themen 7
E Java Programm zur anzeige, ob Winter- oder Sommerzeit herrscht Java Basics - Anfänger-Themen 62
I QR code in Java selber generieren Java Basics - Anfänger-Themen 5
V Java-Ausnahmebehandlung: Behandlung geprüfter Ausnahmen Java Basics - Anfänger-Themen 1
krgewb Java Streams Java Basics - Anfänger-Themen 10
A Überwältigt von der komplexen Java Welt Java Basics - Anfänger-Themen 29
O Mehrfachvererbung auf Spezifikations- und Implementierungsebene in Java. Interfaces Java Basics - Anfänger-Themen 19
John_Sace Homogene Realisierung von Generics in Java ? Java Basics - Anfänger-Themen 19
P Meldung aus Java-Klasse in Thread an aufrufende Klasse Java Basics - Anfänger-Themen 1
R mit Java API arbeiten Java Basics - Anfänger-Themen 9
P JDK installieren Probleme bei der Java-Installation Java Basics - Anfänger-Themen 8
S Java: Wie sortiere ich eine ArrayList benutzerdefinierter Objekte nach einem bestimmten Attribut? Java Basics - Anfänger-Themen 2
Timo12345 JNLP File mit Java öffnen Java Basics - Anfänger-Themen 2
S Video Editierung mit Java.._ Java Basics - Anfänger-Themen 2
F Einstelungen in Java - CursorBlinkRate Java Basics - Anfänger-Themen 10
A PHP $_POST["name"] in Java Java Basics - Anfänger-Themen 3
vivansai21 Is there a oneliner to create a SortedSet filled with one or multiple elements in Java? Java Basics - Anfänger-Themen 9
Athro-Hiro Weißes Bild in Java erstellen Java Basics - Anfänger-Themen 3
Arjunreddy Can someone please tell me how to use a debugger in BlueJ(a Java environment) Java Basics - Anfänger-Themen 1
M Java assoziationen (UML) Java Basics - Anfänger-Themen 8
H Excel-Tabellen mit Java erstellen Java Basics - Anfänger-Themen 4
Simon16 Java ArrayListe von einer Klasse sortieren Java Basics - Anfänger-Themen 2
P Wie kann ich in meinem Java Programm etwas dauerhaft speichern? Java Basics - Anfänger-Themen 5
H Nutzt Eclipse alle CPU-Threads beim Ausführen von Java-Programmen? Java Basics - Anfänger-Themen 4
xXGrowGuruXx Java einstieg, leichte sache 0 verstanden Java Basics - Anfänger-Themen 7
A java.sql.SQLException: Data type mismatch. Java Basics - Anfänger-Themen 1
H Java-Programm zur Ausgabe von Zuständen Java Basics - Anfänger-Themen 80
N Java Spiel Figur auf dem Hintergrundbild bewegen. Java Basics - Anfänger-Themen 11
G Kann Java-Programm nicht als jar aufrufen, auch als EXE nicht Java Basics - Anfänger-Themen 19
N Java Taschenrechner hat Jemand vlt einen Tipp dafür wie ich jetzt die buttons verbinden kann und das Ergebnis auf dem textfield anzeigen lassen kann Java Basics - Anfänger-Themen 13
A Lerngruppe Java Java Basics - Anfänger-Themen 2
G Help me in the Java Program Java Basics - Anfänger-Themen 2
L Java- Vererbung Java Basics - Anfänger-Themen 4
LimDul Suche Java Stream Tutorial Java Basics - Anfänger-Themen 2
_so_far_away_ Ich möchte Java lernen Java Basics - Anfänger-Themen 11
benny1993 Java Programm erstellen für ein Fußball-Turnier Java Basics - Anfänger-Themen 3
M Datentypen While-Schleife eine Java Methode erstellen Java Basics - Anfänger-Themen 3
V Bild per Java Script austauschen Java Basics - Anfänger-Themen 7
MoxMorris this Keyword in Java Java Basics - Anfänger-Themen 14
D Wie kann man in Java nach Arrays auf Duplikate prüfen Java Basics - Anfänger-Themen 12
wolei JAVA Zeitdifferenz feststellen. Java Basics - Anfänger-Themen 4
DiyarcanZeren Rekursion in Java Java Basics - Anfänger-Themen 5
wolei Java generic interface in a generic class Java Basics - Anfänger-Themen 6
monsterherz Ablauf der Erstellung eines Java Programmes Java Basics - Anfänger-Themen 17
monsterherz Circle.java:5: error: <identifier> expected Java Basics - Anfänger-Themen 2
julian-fr Wie kann ich am besten Java lernen? Java Basics - Anfänger-Themen 17
A Java-Properties und -RessourceBundles Java Basics - Anfänger-Themen 5
lrnz22 Java-Basics-Aufgabe Java Basics - Anfänger-Themen 8
R Java kann nicht installiert werden Java Basics - Anfänger-Themen 8
marcelnedza Finde meinen Fehler in einer Methode nicht, Java Karol Java Basics - Anfänger-Themen 15
G In ein java Dokument Ton einbinden Java Basics - Anfänger-Themen 1
C was heisst es wenn java ']' erwartet ? Java Basics - Anfänger-Themen 2
KeinJavaFreak Erste Schritte Programm "Java(TM) Platform SE binary " nicht vorhanden Java Basics - Anfänger-Themen 1
KeinJavaFreak Erste Schritte Java "Executable Jar File" nicht vorhanden Java Basics - Anfänger-Themen 1
melisax Java 2D-Array Tabelle Java Basics - Anfänger-Themen 4
melisax Java Array Wert an bestimmtem Index angeben Java Basics - Anfänger-Themen 14
J Java Testklasse Java Basics - Anfänger-Themen 5
P Java Selenium . Parameterized.Parameters erzeugt eine Fehlermeldung Java Basics - Anfänger-Themen 14
W Java-Code mit Array Java Basics - Anfänger-Themen 14
W Java-Code Java Basics - Anfänger-Themen 2
P BeforeEach AfterEach werden nicht ausgeführt. Java / Selenium Java Basics - Anfänger-Themen 4
A Wie führe ich eine Batch-Datei von meiner Java-Anwendung aus? Java Basics - Anfänger-Themen 18
W Java code- TicTac toe Java Basics - Anfänger-Themen 51
R Java boolean Unterschied " == " und " = " Java Basics - Anfänger-Themen 3
D Java Programm mit Batch-Datei starten Java Basics - Anfänger-Themen 32
W Java-code Java Basics - Anfänger-Themen 8
W Java-code Java Basics - Anfänger-Themen 9
W Java-Code erklären Java Basics - Anfänger-Themen 6
A Java Kurs / Tutorial Java Basics - Anfänger-Themen 6
K Java Lotto Spiel; ich komme nicht weiter Java Basics - Anfänger-Themen 15
R Operatoren Rechenoperation in Java verwenden für Calculator Java Basics - Anfänger-Themen 2
P Java 2n Potenzieren Java Basics - Anfänger-Themen 1
J Java Hamster Java Basics - Anfänger-Themen 4
D Wie sehe ich ein Java-Programm? Java Basics - Anfänger-Themen 27
V Die Funktion des neuen Schlüsselworts in Java Java Basics - Anfänger-Themen 1
W Junit-Test (Java) Java Basics - Anfänger-Themen 4
W Testfälle bei Java ( Junit-Test) Java Basics - Anfänger-Themen 3
laxla123 If-else Java Java Basics - Anfänger-Themen 4
RashAGhul Java Verwaltungstool Erstellen mit kaum Wissen Java Basics - Anfänger-Themen 9
S Substring in java Java Basics - Anfänger-Themen 3
Z Operatoren Java Applikation Java Basics - Anfänger-Themen 8
Tw1Z Erste Schritte Sort in java Java Basics - Anfänger-Themen 2
sasnitzer java augensumme von zwei würfeln ist 1 Java Basics - Anfänger-Themen 8
MiMa Java Doc mehrere Return Parameter Java Basics - Anfänger-Themen 11

Ähnliche Java Themen

Neue Themen


Oben