Style Guidelines für Java und .NET Seminar aus Softwareentwicklung: Programmierstil Style Guidelines für Java und .NET Klaus Lehner 9957635, klu2@gmx.at
Übersicht Was sind Guidelines? Wozu Guidelines? Allgemeine Formatierung Namenskonventionen Deklarationen Statements Verzweigungen & Schleifen Whitespaces Dokumentation CheckStyle Anwendung in der Praxis
Was sind Guidelines? Unverbindliche Richtlinien, wie Source Code zu schreiben ist, an die man sich halten sollte. Falls man sich an eine Regel nicht hält, soll man dies dokumentieren!
Wozu Guidelines? Immer mehr Geld fließt in die Wartung von Source Code Fast keine Software wird immer vom Programmierer selbst gewartet
Allgemeine Formatierungen Keine Tabulatoren Keine Pagebreaks Zeilenlänge auf 80 Zeichen beschränken Zeilenumbruch nach einem Komma Zeilenumbruch nach einem Operator Die neue Zeile an den Anfang des Ausdrucks ausrichten Function1 (param1, param2, param3); totalSum = a + b + c + d + e; for (tableNo = 0; tableNo < maxTable; tableNo += tableStep)
Namenskonventionen (1) Syntaktische Namenskonventionen Pascal Case BackColor Camel Case backColor Uppercase MAXLEN Kein Case Sensitiv!!! Java .NET Packages / Namespaces Camel Pascal Klassen Interfaces Pascal; Präfix I Methoden Felder, Parameter Property --- Konstanten Uppercase
Namenskonventionen (2) Semantische Namenskonventionen Englisch verwenden! Keine Abkürzungen Keine verneinten bool‘schen Variablen bool isNotError; : if (!isNotError) .. Iteratoren i, j, k, ... Repräsentation einer Anzahl nPoints, numberOfPoints Initialisierungsmethoden InitializeFontSet() Suchmethoden FindNext() Berechnungsmethoden ComputeAverage()
Namenskonventionen (3) JavaBeans-Konventionen get / set / is public boolean isConnected() { return connected; } public String getName() { return this.name; } public setName(String n) { this.name = n; }
Deklarationen Klassen- und Methodendeklarationen Variablendeklaration Nach jeder Methode 1 Zeile freilassen Variablendeklaration Nur gleichartige Variablen in einer Zeile deklarieren Immer am Anfang eines Blocks Keine äußerliegenden Variablen überdecken Class Foo { int var; void FooMeth() { if (keypressed) { : } // if } // FooMeth } // Foo
Statements max. 1 Anweisung pro Zeile Ausnahme: For-Schleife Zusammengehörende Statements nacheinander schreiben Bei Schleifen und Verzweigungen immer geschwungene Klammern verwenden myObject.message1(); myObject.message2(); counter++; myObject.message3(); myObject.message1(); myObject.message2(); myObject.message3(); counter++;
Verzweigungen if (condition) { statements; } } else { } else if (condition) { switch (value) { case 1: statements; /* fall through */ case 2: break; case 3: default: statement; }
Schleifen & try...catch for (initialization; condition; update) { statements; } try { statements; } catch (Exception e) { } statements } finally { while (condition) { statements; } do { statements; } while (condition);
Abstände Leerzeichen zur besseren Lesbarkeit einführen vor und nach Operatoren nach Kommas counter=1; grandTotal=invoice.total()+getAmountDue(); grandTotal=Discounter.discount(grandTotal,this); counter = 1; grandTotal = invoice.total() + getAmountDue(); grandTotal = Discounter.discount(grandTotal, this);
Dokumentation „Goldene Regel“ Source Code, der es nicht wert ist, dokumentiert zu werden, ist es auch nicht wert, geschrieben zu werden.
Code Beautifier CheckStyle www.sourceforge.net Command Tool JBuilder Plugin „Compiler“, der nach Guideline-Verletzungen sucht www.sourceforge.net nach „checkstyle“ suchen
Praxisbeispiel VAI Linz Besprechung festgelegte Regeln für alle jederzeit zugänglich zusätzlicher Einsatz von CheckStyle
Zusammenfassung Die Richtlinien verstehen Eine Liste von Richtlinien auswählen An diese Richtlinien glauben Sie schon während der Implementierung befolgen, nicht erst nachher Den Style zu einem Teil der Qualität machen Für Menschen, nicht Maschinen programmieren
Happy Coding ;-)