![]() |
|
|
Themen-Optionen |
|
|
Nach oben #1 |
|
Erfahrener Benutzer
Registriert seit: 02.02.2005
Beiträge: 513
|
Welche Grundlagen sollten beachtet werden, damit der Code schön lesbar ist? Eindeutige Variablennamen zu benutzen und nach einem ; eine neue Zeile Anfangen und nach { } ebenfalls und zusätzlich den Code einrücken dürfte eigentlich jedem klar sein. Aber was gehört sonst noch dazu?
[edit] hab net so genau gewusst, wo ich das reinposten soll. Wenn ihr meint das wäre woanders besser aufgehoben, dann verschiebts einfach |
|
|
|
|
|
Nach oben #2 |
|
Projektleiter
Registriert seit: 30.11.2005
Ort: Bottrop
Beiträge: 1.084
|
Versuch bei einer Formatierungsweise zu bleiben.
Die meisten Sachen sind Geschmackssache. Ich bevorzuge eine leicht modifizierte Formatierung gemäß den Java Richtlinien (ja, da gibts sogar was von Sun, dass beschreibt, wie man seinen Code formatieren sollte). Aber am wichtigsten ist wirklich, dass du einheitlich formatierst. Es gibt nichts schlimmeres, als wenn du einmal so und einmal so einrückst.
__________________
Patrick Gotthardts Weblog. |
|
|
|
|
|
Nach oben #3 |
|
Benutzer
Registriert seit: 30.11.2004
Beiträge: 97
|
Also für mich gehört auf jeden Fall da noch die Doku rein ... d.h. für jede Methode javadoc-Kommentare schreiben ... und wenn nötig auch für die Attribute ... dann mache ich auch noch in den Methoden normale Kommentare, damit ich nach einem Jahr auch noch weiss, was ich da gemacht habe (oftmals weiss ich das eine Woche später schon nicht mehr . )
Bei den schließenden geschweiften Klammern habe ich mir angewöhnt einen kurzen Kommentar dahinter zu setzen, was für eine Klammer da zu geht, denn bei mehrfach geschachtelten Schleifen und langen Methoden (wo ich die öffnende Klammer nicht mehr im Sichtfeld habe) wird das sonst ganz schnell unübersichtlich. Michael |
|
|
|
|
|
Nach oben #4 |
|
Projektleiter
Registriert seit: 30.11.2005
Ort: Bottrop
Beiträge: 1.084
|
Zum Thema JavaDoc: Nicht jede Methode braucht einen Kommentar. Der Methodenname sollte klar genug sein. Hier mal ein Beispiel:
Code:
public void saveSettingsToFile(File f) throws IOException {
FileOutputStream fos = new FileOutputStream(f);
fos.write(this.getSettingsAsString());
fos.close();
}
Code:
/**
* <p>This method saves the settings of this object to the specified file.</p>
*
* @return void
* @param f The file which shall contain the settings
* @throws An IOException that might happen while writing the settings.
*/
public void saveSettingsToFile(File f) throws IOException {
// Create the OutputStream
OutputStream fos = new FileOutputStream(f);
// Write settings
fos.write(this.getSettingsAsString());
// close the stream
fos.close();
}
Code:
public String getSettingsAsString() {
List settings = getSettingsAsList();
StringBuffer sb = new StringBuffer();
// This loop is fairly complex. On startup we put the iterator of our list
// into the variable "i". Also on startup we get the first entry out of our
// Iterator and put that into "s". The others parts of the loop shall be
// obvious.
for(Iterator i = settings.iterator(),
Setting s = (Setting)i.next(); i.hasNext(); s = (Setting)i.next()) {
// We're entering the loop-body
sb.append(s.toString());
}
return sb.toString();
}
Ein JavaDoc-Kommentar ist an dieser Stelle wirklich überflüssig, da der Methodenname gut genug gewählt ist, um Sinn und Zweck der Methode zu erklären.
__________________
Patrick Gotthardts Weblog. |
|
|
|
|
|
Nach oben #5 |
|
Benutzer
Registriert seit: 30.11.2004
Beiträge: 97
|
Auch wenn die Methode klein und ohne javaadoc nett ausschaut mach ich die javadoc-Kommentare rein ... 1.hab ich das Zeugs dann in meiner automatisch erzeugten Doku und 2. werden die Daten mir automatisch in eclipse presentiert, sobald ich mit der Maus drüber gehe.
Bei den Kommentaren innerhalb der methode hast du mich etwas falsch verstanden ... ich schreibe nciht für jedes Kommando ein Kommentar ... nur wenn es nötig ist (bitte jetzt nicht solche Sprüche wie: Der Code ist die Doku - hast du schon mal fremden Code ohne Kommentare gelesen ???) Und dann noch gleich ne Kritik an deinem Beispiel ... auch als Prameter in einer Methode sollte man sprechende namen vergeben (und nicht sowas wie File f). Wenn du eine längere Methode hast, wirst du dich (oder jemand, der deinen Code verstehen muss sich) irgendwann fragen, was denn f ist. |
|
|
|
|
|
Nach oben #6 |
|
Projektleiter
Registriert seit: 30.11.2005
Ort: Bottrop
Beiträge: 1.084
|
Ich hab oft genug fremden Code gelesen (habe schon ein paar "Hacks" für das wBB geschrieben - es ist wirklich die Hölle).
Code, der so kommentiert ist, wie ich es im 2. Beispiel gezeigt habe, habe ich schon häufiger bei Anfängern gesehen, denen gesagt wurde, dass Kommentare immer gut sind. Daher nur ein Gegenbeispiel. Die Anzeige des JavaDoc in Eclipse/NetBeans etc. ist dann hilfreich, wenn die Verwendung der Methode nicht direkt klar ist. Bei meinen Beispielen steht im Kommentar das gleiche, wie der Methodenname suggeriert. Folglich ist der Kommentar überflüssig (wie die Kommentare beim 2. Beispiel im Code der Methode). Zu deiner Kritik: Das könnte ein Argument sein, muss es aber nicht. Wenn ich in meinem Code konsequent dabei bleibe und es vielleicht sogar in einer Dokumentation der Formatierung erwähne, dann sind solche kürzel durchaus machbar. So wie ich den Index eines Arrays in einer For-Schleife auch grundsätzlich mit dem wenig selbsterklärendem Namen "i" ausstatte. Wenn in der Schleife noch eine For-Schleife vorkommt, dann heißt die grünsätzlich "j" (obwohl ich hier gestehen muss, dass ich versuche mir das abzugewöhnen - nette Idee wäre "n"). Das Iterator-Objekt habe ich übrigens auch "i" genannt - ebenfalls eine meiner Konventionen. Genauso kann ich vereinbaren: Wenn in einer Methode nur ein "File"-Objekt vorkommt, dann wird dieses mit "f" bezeichnet. Wenn ich konsequent dabei bleibe, dann ist das legitim und übersichtlich. Wenn ich natürlich mal dies mal das mache sinkt die Lesbarkeit erheblich. Um einige meiner Kürzel zusammenzufassen (und das ich das überhaupt kann, sagt schon viel über die Konsistenz der Verwendung aus i = Index einer For-Schleife / Iterator j = Zweite Ebene einer For-Schleife (kommt so gut wie nie vor) n = Dritte Ebene einer For-Schleife (kommt so gut wie nie vor) s = String fos = FileOutputStream fis = FileInputStream sb = StringBuffer / StringBuilder (5.0) Solange ich niemals etwas wie Code:
Map s = new HashMap(); Ferner sind diese Kürzel bei mir immer nur lokale Variablen, selten Parameter (wenn Parameter dann nur dann, wenn Zweck in der Methode trotzdem klar ist - im Falle von "f" sollte klar sein, dass das die Datei ist, die beschrieben werden soll). Bei Sachen wie: Code:
public void copySettings(File f, File f2); Da verwende ich dann auch sowas: Code:
public void copySettings(File fromFile, File toFile);
__________________
Patrick Gotthardts Weblog. |
|
|
|
|
|
Nach oben #7 |
|
Neuer Benutzer
Registriert seit: 17.03.2005
Beiträge: 18
|
Moin,
wie wäre es denn einfach mit dem offiziellen Styleguide? Java Coding Styleguide Und dann noch einen Codeformatter (z.B. den eingebauten von Eclipse) dementsprechend anpassen. Gruß Stephan |
|
|
|
|
|
Nach oben #8 | ||
|
Erfahrener Benutzer
Registriert seit: 02.12.2004
Ort: Remagen
Beiträge: 4.800
|
Zitat:
Zitat:
Präzise, selbsterklärende Namen sind meiner Ansicht nach absolute Pflicht für jede Art von lesbaren Code Grüße Ben. |
||
|
|
|
|
|
Nach oben #9 |
|
Neuer Benutzer
Registriert seit: 17.03.2005
Beiträge: 18
|
Ihr habt meine absolute Zustimmung zu gut lesbarem Code
Zu den Zeiten als ich noch in C programmiert habe konnte ich meinen eigenen Code oft schon nach Tagen nicht mehr verstehen Jetzt wird alles mit javadoc anständig dokumentiert, sprechende Variablennamen gewählt und auch auf ein vernünftiges Format geachtet, auch wenn's länger dauert. Hält halt auch länger Viele Grüße Stephan |
|
|
|
![]() |
| Lesezeichen |
| Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1) | |
| Themen-Optionen | |
|
|
Ähnliche Themen
|
||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| Netbeans generierter Code | bacarni | Tools, Server, Betriebssysteme | 2 | 15.09.2005 12:26 |
| PHP Code wird nicht ausgeführt ! | Dark Knight | PHP-Programmierung | 22 | 13.09.2005 14:12 |
| Internet-Explorer aktualisiert Code nicht | Gottzilla | Desktop-Applikationen und Grafik | 5 | 07.03.2005 17:28 |
| Von JAVA Code zu C++ Code ? | kampet | Allgemeine Java-Programmierung | 7 | 12.08.2004 20:19 |