Entwicklungsrichtlinien für Java-Software PG-AQUASIUM Michael Weking

Slides:



Advertisements
Ähnliche Präsentationen
C Sharp (C#) Martin Saternus Senior Student Partner
Advertisements

der Universität Oldenburg
der Universität Oldenburg
der Universität Oldenburg
der Universität Oldenburg
Einführung in die Programmierung Zusammenfassung
Dr. Andreas Winter Sommersemester 2007 Einführung in die Software-Entwicklung © Institut für Informatik Programmier-Richtlinien vgl. auch
(kleine!) Java Einführung Mittwoch, Heute Ziel: erstes Java-Programm erstellen Von der Aufgabenstellung bis zur Lösung Grundlagen Einfache.
Objektorientierte Programmierung
der Universität Oldenburg
Ausnahmen HS Merseburg (FH) WS 06/07.
Java: Objektorientierte Programmierung
Java: Dynamische Datentypen
Java: Grundlagen der Objektorientierung
SWITCH - Anweisung.
SWITCH - Anweisung.
Ein Beispiel in Java.
Klassenvariable. Da man für jede Kuh bzw. jede Henne auf dem Markt den gleichen Preis für ein Liter Milch, bzw. den gleichen Preis für ein Ei bekommt,
Konstruktoren.
Interface bzw. Schnittstelle anschaulich: Hüllenklasse
Exceptions. import java.sql.*; public class MyException{ boolean b; Statement stat; public MyException(){ b = stat.execute("xyz"); } Beim Übersetzen dieses.
Praktikum Entwicklung und Einsatz von Geosoftware I - Sitzung 5 Polymorphismus Sommersemester 2003 Lars Bernard.
Praktikum Entwicklung und Einsatz von Geosoftware I - Sitzung 3 Klassen, Objekte, Arrays und Kontrollstrukturen Sommersemester 2003 Lars Bernard.
Imperative Programmierung Funktionen und Parameter
Programmieren mit JAVA
Programmieren mit JAVA
PKJ 2005/1 Stefan Dissmann Zusammenfassung Vorwoche Programm besteht aus mehreren Bestandteilen: Schlüsselwörter Sonderzeichen Bezeichner Kommentare Texte.
PKJ 2005/1 Stefan Dissmann Zusammenfassung Bisher im Kurs erarbeitete Konzepte(1): Umgang mit einfachen Datentypen Umgang mit Feldern Umgang mit Referenzen.
Zusammenfassung Vorwoche
Packages Vortrag : Cornelia Hardt 23. November 1999.
1DVG3 - Paint Paint ein Zeichenprogramm. DVG3 - Paint 2 Paint – ein Zeichenprogramm.
1DVG3 - anonyme Klassen Anonyme Klassen. DVG3 - anonyme Klassen 2 Syntax new BasisKlasse(Parameterliste) { Modifikationen und Erweiterungen der Basisklasse.
DVG Interfaces. DVG mehrfache Vererbung 4 Mehrfache Vererbung ist die Ableitung einer Klassen von mehreren anderen Klassen. –farbigerPunkt.
DVG Einführung in Java1 Einführung in JAVA.
DVG Methoden 1 Methoden. 2 int dezi = Integer.parseInt(args[0]); boolean vz = (dezi>=0); dezi = Math.abs(dezi); String Bin = ""; do { } while.
DVG Klassen und Objekte
Java in 9 Folien Besser: Online-Buch Go to Java 2.
Seite 1 Interface - Konzept Ein Interface führt einen neuen Datentyp ein: interface Frau {... } Das Interface enthält Deklarationen ( keine Definitionen.
Sitzung 3: Klassen, Objekte, Arrays und Kontrollstrukturen
Grundkonzepte Java - Klassendefinition
Java programmieren mit JavaKara
Einführung in das Programmieren mit JavaScript Mag. Andreas Starzer weloveIT – EDV Dienstleistungen.
Informatik 1 Übung 2.
Wir haben gesehen Das Gerüst ist bei JavaKara fix vorgegeben
IT2 – WS 2005/20061Oct 10, 2005 Externes Verhalten – Quelltext (source code) Durch Aufrufe der Konstruktoren und Methoden kann das externe Verhalten (=die.
Einführung in die Programmiersprache C 3.Tag Institut für Mathematische Optimierung - Technische Universität Braunschweig.
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
CuP - Java Elfte Vorlesung Montag, 11. November 2002.
EPROG Tutorium Einheit 4 Klassen und Objekte. Wiederholung Schleifen do... while while for break/continue Strings String char Methoden für Strings Arrays.
Telecooperation/RBG Technische Universität Darmstadt Copyrighted material; for TUD student use only Grundlagen der Informatik I Thema 16: Ausnahmebehandlung.
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
Abteilung für Telekooperation Übung Softwareentwicklung 1 für Wirtschaftsinformatik Dr. Wieland Schwinger
OOP-Begriffe Abstraktion Modellieren Klasse Objekt Attribute Methoden
Style Guidelines für Java und .NET
Variablenkonzept Klassisch, in Java Basistyp
Programmbereich, zu dem eine Deklaration gehört Arten von Gültigkeitsbereichen -Namespace : Deklarationen von Klassen, Interfaces, Structs, Enums, Delegates.
Purga - Scriptengine Ein Einblick.
EPROG Tutorium #4 Philipp Effenberger
EPROG Tutorium #3 Philipp Effenberger
Einführung in PHP 5.
CuP - Java Vierte Vorlesung Entspricht ungefähr Kapitel 2.1 des Skriptums Montag, 14. Oktober 2002.
Starten der Entwicklungsumgebung (IDE)
Java-Kurs - 4. Übung Hausaufgabe Weitere Kontrollstrukturen
Java-Kurs - 4. Übung Hausaufgabe Weitere Kontrollstrukturen
Java-Kurs Übung Besprechung der Hausaufgabe
Programmierkurs JavaUE 4 Anweisungen und ProgrammeDietrich BolesSeite 1 Programmierkurs Java Dr. Dietrich Boles Teil Imperative Programmierung Unterrichtseinheit.
Java-Kurs - 4. Übung weitere Kontrollstrukturen
Es gibt Klassen, die mit der Entwicklungsumgebung ausgeliefert werden
Implementieren von Klassen
 Präsentation transkript:

Entwicklungsrichtlinien für Java-Software PG-AQUASIUM Michael Weking Style Guides Entwicklungsrichtlinien für Java-Software PG-AQUASIUM Michael Weking

Verwendung von Richtlinien 1. Graphical User Interface (GUI) 2. (Java-) Programmcode 1. GUI Benutzerfreundlichkeit Style Guides

Grundidee Problem: Lösung: Durch ungewohnte Formatierung von Code kann dessen Verständnis erheblich erschwert werden. Jeder kann sich im Code jedes anderen leichter orientieren. Richtlinien sind verbindlich. Soll von den Richtlinien abgewichen werden, dann nur aus triftigem Grund, der zu dokumentieren ist. Lösung: Einheitlicher („guter“) Programmierstil Style Guides

Bestehender Code Änderung und Erweiterung Dokumentation der Änderungen CVS (Java-) Quellcode ReadMe-Datei CVS: /* $Log: $ */ Style Guides

Codierregeln (1/8) main Methode Überladen von Methoden In jeder Klasse zu Testzwecken erlaubt Überladen von Methoden innerhalb der selben Klasse gestattet (wenn sie semantisch das gleiche tun) In jeder Klasse kann zu Testzwecken eine main Methode erzeugt werden. Dies erlaubt, die Funktionalität in Form eines Unittests oder Demos zu prüfen. Insbesondere beim Setzen von Werten bei Klassenvariablen ist Vorsicht geboten, da dies isoliert im Test zwar einwandfrei funktioniert, beispielsweise aber bei einer Integration im Gesamtsystem jedoch Probleme bereiten kann. Style Guides

Codierregeln (2/8) lokale Variablen Deklaration wo Initialwert bekannt ist bestehende besser nicht überschreiben Beispiel: ... for( int i = 0; i < 10; i = i + 1 ) { } Die Deklaration einer lokalen Variablen muss dort stattfinden, wo ihr Initialwert bekannt ist. Dies ist besonders bei Schleifen der Fall. Lokale Variablen sollten lieber neu deklariert und initialisiert werden, als Bestehende zu überschreiben/wiederzuverwenden. Fehlerquellen können so minimiert werden. Style Guides

Codierregeln (3/8) Blöcke in Schleifen und Bedingungen Continue und break müssen in Schleifen umsichtig verwendet werden Switch-Anweisungen müssen immer einen default case beinhalten Break muss jeden case einer switch-Anweisung beenden. Style Guides

Codierregeln (4/8) Import von Paketen Wahlloses Importieren sämtlicher Klassen eines Paketes (mittels *) sollte vermieden werden Punktnotation bei Uneindeutigkeit (z. B. java.awt.Frame) Style Guides

Codierregeln (5/8) Klassenrumpf Klassenvariablen sparsam verwenden Zugriff auf Variablen grundsätzlich nur über Methoden (d. h. keine „public“-Variablen) Style Guides

Codierregeln (6/8) Aufbau einer Methode: Kopfkommentar Methodendeklaration Methodenrumpf kohäsiv = zusammenhaltend Leitsatz: Schreibe kurze und hoch kohäsive Methoden! Style Guides

Codierregeln (7/8) Exceptions Abfangen von unerwarteten Bedingungen/Fehlern/Situationen/Zuständen Programm bricht nicht ab, sondern läuft ab einem definierten Wiedereinstiegspunkt weiter. Exceptions sind nicht dazu da, Bedingungen/Situationen/Zustände zu behandeln, die bei jedem regulären Programmablauf zu erwarten sind. Style Guides

Codierregeln (8/8) Beispiel für schlechten Programmierstil: ... int[] anArray = {3, 1, 2, 5, 4}; int sum = 0; try { for( int i = 0; i<Integer.MAX_VALUE; i = i + 1 ) sum = sum + anArray[i]; } catch( ArrayIndexOutOfBoundsException e ) {} Schlechtes Beispiel für Exceptionaufruf. Style Guides

Einrückungen und Layout (1/4) package ... import ... Klassendeklaration /* Kopfkommentar der Klasse */ class DieEigentlicheKlassendeklaration Deklaration/Kommentierung der Variablen und Konstanten Methodendeklaration /* Kopfkommentar der Methode */ void DieEigentlicheMethodendeklaration(...) Deklaration/Kommentierung lokaler Var. und Konst. ... restlicher Methodencode Style Guides

Einrückungen und Layout (2/4) Trennen von zu langen Nachrichten: ... myView.doThis( withThat ... ) .andThat( withThose ...) .andSomethingOther( withThoseFollowing ...); Style Guides

Einrückungen und Layout (3/4) Fallunterscheidungen ... /* Kommentar */ if ( <Bedingung> ) { /* ggf. Kommentar */ Anweisung_1; Anweisung_n; } else if ( <Bedingung> ) else }; Style Guides

Einrückungen und Layout (4/4) Korrektes Einrücken von Blöcken: ... /* Der True-Block ist zu lang für eine Zeile, der False-Block nicht. */ if ( rectangle.x() > rectangle.y() ) { /* True-Zweig der Bedingung */ rectangle.invert(); rectangle.placeUpRight(); } else { return false }; Style Guides

Namen und Bezeichner (1/9) Bezeichnerwahl möglichst selbsterklärend Verwendung von Grossbuchstaben gliedert Bezeichner, die aus mehreren Wörtern zusammengesetzt sind (z. B. handleEvent(...) ) Style Guides

Namen und Bezeichner (2/9) Bezeichner für Klassen, Klassenvariablen Beginnt mit einem Großbuchstaben Sollte etwas über die Bedeutung der Objekte verraten (wenig über die Implementierung) Style Guides

Namen und Bezeichner (3/9) Bezeichner für Konstanten keine Kleinbuchstaben (korrekt: PI, falsch: Pi) stehen am Beginn einer Klasse sind final Style Guides

Namen und Bezeichner (4/9) Bezeichner für lokale Variablen Exceptions: Kleinbuchstabe e Schleifenzähler: Kleinbuchstaben i, j, k Streams: Benannt in Bezug auf ihre Tätigkeit (also: in, out, inOut) Style Guides

Namen und Bezeichner (5/9) Benennung von Methoden Zustands- oder Zugriffsmethoden Benennung mit einem Substantiv. (z. B. length(...) ) Bei Bedarf: Voranstellung eines Adjektivs oder Präposition (z. B. currentState(...) ) Eventuell Voranstellen der Silbe get oder set Style Guides

Namen und Bezeichner (6/9) Benennung von Methoden Vergleichs- oder Prädikatmethoden Benennung unter Benutzung eines Verbs als Fragment eines Fragesatzes (z. B. intersects(), isInState(), isEquivalenceRelation() ) Style Guides

Namen und Bezeichner (7/9) Benennung von Methoden Aktionsmethoden Benennung unter Benutzung eines Verbs als Fragment eines Befehlssatzes (z. B. update(...), redraw(...), drawLine() ) Style Guides

Namen und Bezeichner (8/9) Bezeichnung von formalen Parametern Möglichkeit 1: Bezeichnung der Rolle, die der formale Parameter für die Methode jeweils spielt void reshape( int xPosition, int yPosition, int width, int height) ... Style Guides

Namen und Bezeichner (9/9) Bezeichnung von formalen Parametern Möglichkeit 2: Formale Parameter sind nach dem Basistyp bzw. der Basisklasse bezeichnet void name( String aString) ... Style Guides

Fazit Die „Normierung“ von Code führt zu Erhöhung der Übersicht Vermeidung von Fehlern Aber: Es gibt nicht nur eine mögliche „Normierung“ (Unterschiede von Firma zu Firma, Arbeitsgruppe zu Arbeitsgruppe, ...) Style Guides