Impressum · Kontakt · Hilfe
Besucher online · Mitglieder



Antwort
 
Themen-Optionen
Alt 04.04.2005, 07:51   Nach oben    #1
Erfahrener Benutzer
 
Benutzerbild von Gottzilla
 
Registriert seit: 02.02.2005
Beiträge: 515
Standard lesbarer Code

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
Gottzilla ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 04.04.2005, 10:02   Nach oben    #2
Projektleiter
 
Registriert seit: 30.11.2005
Ort: Bottrop
Beiträge: 1.091
Standard

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.
pago ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 04.04.2005, 10:05   Nach oben    #3
Benutzer
 
Benutzerbild von ehli75
 
Registriert seit: 30.11.2004
Beiträge: 97
Standard

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
ehli75 ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 04.04.2005, 13:03   Nach oben    #4
Projektleiter
 
Registriert seit: 30.11.2005
Ort: Bottrop
Beiträge: 1.091
Standard

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();
}
Diese Methode hat keinen Kommentar. Warum sollte ich die Menge an Code, die ich überblicken muss, erhöhen, und daraus z.B. das hier zu machen:
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();
}
Die Kommentare da sagen mir gar nichts. Die hätte man sich auch sparen können. Besser ist sowas:
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();
}
Die Methode ist wunderbar klar und lesbar, die einzige unübersichtliche Stelle (bei der ich mir nichtmal sicher bin, ob die so kompiliert wird) wird von einem Kommentar erläutert.
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.
pago ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 04.04.2005, 13:36   Nach oben    #5
Benutzer
 
Benutzerbild von ehli75
 
Registriert seit: 30.11.2004
Beiträge: 97
Standard

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.
ehli75 ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 04.04.2005, 14:12   Nach oben    #6
Projektleiter
 
Registriert seit: 30.11.2005
Ort: Bottrop
Beiträge: 1.091
Standard

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();
einbaue und mich an meine Reglungen halte ist das ganze kein Problem.
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);
wirst du auch bei mir nicht finden.

Da verwende ich dann auch sowas:
Code:
public void copySettings(File fromFile, File toFile);
Aber das sind so Dinge, über die man sich streiten kann. Wie gesagt bin ich der Meinung, dass auch Kürzel verwendet werden können, solange die Kürzel konsequent verwendet werden und eventuelle Mitentwickler über diesen Teil der Konventionen in Kenntnis gesetzt wurden (für mich ist das alltäglich, so dass ich mich mit Sicherheit nie fragen werde, was denn nun "f" ist).
__________________
Patrick Gotthardts Weblog.
pago ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 04.04.2005, 21:21   Nach oben    #7
Neuer Benutzer
 
Benutzerbild von dyrathror
 
Registriert seit: 17.03.2005
Beiträge: 18
Standard

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
dyrathror ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 06.04.2005, 15:40   Nach oben    #8
Ben
Erfahrener Benutzer
 
Benutzerbild von Ben
 
Registriert seit: 02.12.2004
Ort: Remagen
Beiträge: 4.619
Standard

Zitat:
Zitat von ehli75
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.
Exakt. Genau das ist auch mein Grund warum ich so verfahre.

Zitat:
Zitat von ehli75
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.
Kann ich ebenfalls nur zustimmen. Es gibt ja nicht schlimmeres, als wenn man irgendwann a, f1 und f2, x und i, j und k hat ... Hilfe ...

Präzise, selbsterklärende Namen sind meiner Ansicht nach absolute Pflicht für jede Art von lesbaren Code

Grüße Ben.
Ben ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 06.04.2005, 17:57   Nach oben    #9
Neuer Benutzer
 
Benutzerbild von dyrathror
 
Registriert seit: 17.03.2005
Beiträge: 18
Standard

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
dyrathror ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 06.04.2005, 18:21   Nach oben    #10
Ben
Erfahrener Benutzer
 
Benutzerbild von Ben
 
Registriert seit: 02.12.2004
Ort: Remagen
Beiträge: 4.619
Standard

Zitat:
Zitat von dyrathror
auch wenn's länger dauert. Hält halt auch länger
Bringt es irgendwie auf den Punkt
Ben ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist An.
Smileys sind An.
[IMG] Code ist An.
HTML-Code ist Aus.
Trackbacks are An
Pingbacks are An
Refbacks are Aus

Ä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


Alle Zeitangaben in WEZ +2. Es ist jetzt 18:39 Uhr.

Nach oben
Wir nutzen das Zend Framework, vBulletin (vBulletin v3.7.3, Copyright ©2000-2008, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0) und vBSEO.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44