# guter Programmierstil



## comp89 (21. Nov 2004)

Bis jetzt habe ich mich kaum damit beschäftigt, aber ich finde doch das es wichtig ist. Heute sah ich mir einen Progrmmiercode von mir an, den ich diesen Frühling gemacht hatte, und kannte mich überhaupt nicht mehr aus. Und da ich jetzt bei einem größeren Projekt für die Schule bin (Kalender) , wollte ich fragen

Was macht einen guten Programmiercode aus?

Also, was habt ihr für Tipps für bessere Übersichtlichkeit, Auslagerung in andere Klassen / Methoden usw.


----------



## L-ectron-X (21. Nov 2004)

Guter Programmierstil ist es, seine Klassen so zu schreiben, dass auch noch ein "Wartungsprogrammierer" den Code leicht nachvollziehen kann. Also z.B. Methoden nicht all zu tief verschachteln, auf korrektes Einrücken achten, Großschreibung des ersten Buchstabens von Klassennamen, Kleinschreibung von Methoden- und Variablennamen und ganz wichtig: den Code ausführlich dokumentieren.
In der JLib liegt glaube ich auch ein Link auf die Sun Coding Conventions, die guten Programmierstil erklären.


----------



## Beni (22. Nov 2004)

Wie ich heute bemerkt habe sind "protected Variablen" in diesem Zusammenhang besonders hässlich. (Woher kommt denn nun schon wieder Variable x? Aha, die war in der 5. Superklasse definiert...).

Und auch Methoden welche wild Variablen umändern sind mühsam, lieber einen anständigen Rückgabewert und ein paar lokale Variablen als herumgewurstel.


----------



## Bleiglanz (22. Nov 2004)

> Was macht einen guten Programmiercode aus?


Ich selber würde mich nicht als "guten Programmierer" bezeichnen (wg. Disziplinmangel), die wenigen die ich bisher kennengelernt habe sind IMHO solche, die

- niemals eine Methode undokumentiert lassen (Javadoc)
- diese Dokumentation IMMER aktuell halten
- keine überflüssigen Kommentare machen
- Hacks und Workarounds sehr ausführlich kommentieren
- niemals sinnlose oder kurze Variablen- und Methodennamen verwenden ("Was ist _berAnz_ gleich wieder?")
- klarer Stil (immer gleiche Einrückung, { } immer gleich positioniert usw.) siehe Code Conventions
- wo möglich, die Dinge "final" machen (kostet nichts)
- keine sinnlosen Optimierungen und Performance-Tricks ohne vorherige Messung einbauen
- keine Methoden mit mehr als 50? oder 100? Zeilen verwenden
- keine hart kodierten Dateinamen/URLs oder ähnliches in den Source-Codes haben
- usw. usw.

Speziell bei Java würde ich noch eine gewisse Beherrschung der Bibliotheken dazunehmen. Viele Anfänger - und leider auch Fortgeschrittene - sind es nicht gewohnt, in der API was zu suchen und programmieren dann vorhandene Funktionalität "von Hand" nach, das ist von grossem Übel!

Meiner Meinung ist guter Code eine Frage der eiserenen Disziplin bei der täglichen Arbeit, die ich selbst leider meistens nicht aufbringe


----------



## Sky (22. Nov 2004)

Bleiglanz hat gesagt.:
			
		

> Speziell bei Java würde ich noch eine gewisse Beherrschung der Bibliotheken dazunehmen. Viele Anfänger - und leider auch Fortgeschrittene - sind es nicht gewohnt, in der API was zu suchen und programmieren dann vorhandene Funktionalität "von Hand" nach, das ist von grossem Übel!



Bei Anfängern ist es wahrscheinlich mangeldes Wissen über die API. Bei Fortgeschrittene kann es aber auch mal sein, dass sie etwas von Hand nachproggen, weil die Implementierung von Sun -nett ausgedrückt- in manchen Gebieten 'suboptimal' ist. Das liegt halt daran, dass dort auch Menschen arbeiten und nicht perfekte Programmiermaschinen.


----------



## Bleiglanz (22. Nov 2004)

> weil die Implementierung von Sun -nett ausgedrückt- in manchen Gebieten 'suboptimal' ist. Das liegt halt daran, dass dort auch Menschen arbeiten und nicht perfekte Programmiermaschinen.


jo,  die Nichtverwendung einer Funktionalität sollte aber dann auf jeden Fall gut dokumentiert sein - sonst kommt ja in 6 Monaten ein Hamperer in Projekt und ersetzt diesen Coden durch etwas anderes "gleichwertiges"


----------



## comp89 (22. Nov 2004)

was meint ihr mit überflüssigen kommentaren?
ich denke kein kommentar ist zu viel


----------



## Roar (22. Nov 2004)

```
for(int i=0; i<blupp.size(); i++) { // hier wid i erhöht
bipapo.send(blupp.get(i)); // hier wird ein dumdum objekt hegolt und auf pipapo rausgeschickt
}// hier endet eine schleife
```


----------



## foobar (22. Nov 2004)

```
was meint ihr mit überflüssigen kommentaren?
ich denke kein kommentar ist zu viel
```
Code ist selbstkommentierend
/* no comment */


----------



## comp89 (22. Nov 2004)

ja ok das is etwas übertrieben roar aber gutes beispiel


----------



## Bleiglanz (23. Nov 2004)

da fällt mir noch ein Kriterium für guten Code ein

dass nämlich der Programmierer StrgC StrgV nicht zu oft verwendet


----------



## jptc.org (23. Nov 2004)

So dann geb ich auch nochmal ein etwas senf zu dem thema. schaut doch einfach mal die folgenden resourcen an:

Code Conventions for the Java Programming Language: http://java.sun.com/docs/codeconv/index.html

Ambysoft Java Coding Standards: http://www.ambysoft.com/javaCodingStandards.html


Na dann viel Spaß beim Studieren der Seiten  :### .

karsten voigt
http://www.java-news-center.org


----------

