180 likes | 331 Views
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
E N D
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)
Syntaktische Namenskonventionen Pascal Case BackColor Camel Case backColor Uppercase MAXLEN Kein Case Sensitiv!!! Namenskonventionen (1)
Namenskonventionen (2) • Semantische Namenskonventionen • Englisch verwenden! • Keine Abkürzungen • Keine verneinten bool‘schen Variablen bool isNotError; : if (!isNotError) ..
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; }
Class Foo { int var; void FooMeth() { int var; if (keypressed) { int var; : } // if } // FooMeth } // Foo Deklarationen • Klassen- und Methodendeklarationen • Nach jeder Methode 1 Zeile freilassen • Variablendeklaration • Nur gleichartige Variablen in einer Zeile deklarieren • Immer am Anfang eines Blocks • Keine äußerliegenden Variablen überdecken
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++;
if (condition) { statements; } if (condition) { statements; } else { statements; } if (condition) { statements; } else if (condition) { statements; } else { statements; } Verzweigungen switch (value) { case 1: statements; /* fall through */ case 2: statements; break; case 3: statements; break; default: statement; break; }
while (condition) { statements; } Schleifen & try...catch for (initialization; condition; update) { statements; } try { statements; } catch (Exception e) { statements; } try { statements; } catch (Exception e) { statements } finally { 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 • 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ätzlicherEinsatz vonCheckStyle
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