Validating the Object Calisthenics

Ähnliche Dokumente
3. Klassen Statische Komponenten einer Klasse. Klassenvariablen

Programmieren I + II Regeln der Code-Formatierung

Klausur Grundlagen der Programmierung

Javakurs für Anfänger

Java Einführung Methoden. Kapitel 6

Klassenmethoden. Klassenvariablen. Für das Auslesen des Studentenzählers definieren wir eine öffentliche Klassenmethode:

Angewandte Mathematik und Programmierung

Propädeutikum Programmierung in der Bioinformatik

Probeklausur: Programmierung WS04/05

II.1.1. Erste Schritte - 1 -

Programmieren I + II Regeln der Code-Formatierung

Repetitorium Informatik (Java)

7. Klassenmethoden Einführung in die Programmierung (fbw) Sommersemester 2008 Prof. Dr. Bernhard Humm Hochschule Darmstadt, fbi

Inhaltsverzeichnis. Grundlagen und Einführung (1. Band) 1

Gliederung der Folien

Java Einführung Objekt-Datentypen und Strings. Kapitel 8 und 9

Programmieren in Java

Marcus Deininger / Thomas Kessel. Brückenkurs Java. Lösungen. UVK Verlagsgesellschaft mbh Konstanz mit UVK/Lucius München

Objektorientierte Konzepte

Das Einsteigerseminar Objektorientierte Programmierung in Java

Praktische Informatik 1

Visual C#.NET. Bearbeitet von Patrick A. Lorenz

Klassen und Objekte. Einführung in Java. Folie 1 von Mai Ivo Kronenberg

Kapitel 9: Klassen und höhere Datentypen. Klassen und höhere. Objekte, Felder, Methoden. Küchlin/Weber: Einführung in die Informatik

Programmieren in Java

Martin Unold INFORMATIK. Geoinformatik und Vermessung

2 Eine einfache Programmiersprache

Theorie zu Übung 8 Implementierung in Java

Tag 8 Repetitorium Informatik (Java)

Objektorientierte Programmierung mit Java. Grundlagen Übersicht. Programmiersprachen

7. Objektorientierung. Informatik II für Verkehrsingenieure

14. Java Objektorientierung. Klassen, Vererbung, Kapselung

Wie entwerfe ich ein Programm?

Methoden und Wrapperklassen

Konzepte der Programmiersprachen

2 Eine einfache Programmiersprache

14. Java Klassen. Klassen (Java) vs. Records (Pascal) Klassen - Konzeptuell. Klassen - Technisch

Programmierung für Mathematik HS11

Javakurs FSS Lehrstuhl Stuckenschmidt. Tag 3 - Objektorientierung

Interaktionen zwischen Objekten durch Senden von Nachrichten und Reagieren auf empfangene Nachrichten

II.1.1. Erste Schritte - 1 -

II.1.1. Erste Schritte - 1 -

2 Eine einfache Programmiersprache

Java Spickzettel von Panjutorials.de

Übungen zu Programmieren - Code-Formatierung -

14. Java Klassen. Klassen, Typen, Objekte, Deklaration, Instanzierung, Konstruktoren, statische Felder und Methoden, Datenkapselung

Fragen zur OOP in Java

Einführung in die Programmiersprache Java II

Java Einführung Klassendefinitionen

Polymorphie. 15. Java Objektorientierung II

Institut für Programmierung und Reaktive Systeme 2. Februar Programmieren I. Übungsklausur

Themen der Übung. Methoden und Wrapperklassen. Vorteile von Methoden. Methoden. Grundlagen

Polymorphie. 15. Java Objektorientierung II

Grundelemente objektorientierter Sprachen (1)

C++ - Objektorientierte Programmierung Polymorphie

Das diesem Dokument zugrundeliegende Vorhaben wurde mit Mitteln des Bundesministeriums für Bildung und Forschung unter dem Förderkennzeichen

1 Klassen anlegen und Objekte erzeugen

Grundelemente objektorientierter Sprachen (1)

Javakurs für Anfänger

Gliederung. Algorithmen und Datenstrukturen II. Java: Objektorientierung. Java: Objektorientierung. Objektorientierung in JAVA. D.

Methoden und Klassen. Silke Trißl Wissensmanagement in der Bioinformatik

EINFÜHRUNG IN DIE PROGRAMMIERUNG

Einführung in C. EDV1-04C-Einführung 1

Silke Trißl, Prof. Ulf Leser Wissensmanagement in der Bioinformatik. Jede Applikation braucht eine Klasse mit einer main-methode

2 Eine einfache Programmiersprache

Objektorientierung. Marc Satkowski 20. November C# Kurs

2 Eine einfache Programmiersprache. Variablen. Operationen Zuweisung. Variablen

12. Java Klassen. Klassen - Technisch. Beispiel: Erdbebendaten. Klassen - Konzeptuell

Einstieg in die Informatik mit Java

Welche Informatik-Kenntnisse bringen Sie mit?

Was du ererbt von Deinen Vätern hast, erwirb es, um es zu besitzen. J. W. v. Goethe.

Javakurs für Anfänger

Javakurs für Anfänger

Vorlesung Programmieren

Vorlesung Programmieren. Programmiersprachen-Paradigmen. Programmierparadigmen. Eine Programmiersprache dient dem Aufschreiben von Algorithmen

Ursprünge. Die Syntax von Java. Das Wichtigste in Kürze. Konsequenzen. Weiteres Vorgehen. Rund um Java

Implementieren von Klassen

Test zu Grundlagen der Programmierung Leitung: Susanne Guth/Michael Hahsler. 31. Jänner 2003

EINFÜHRUNG IN DIE PROGRAMMIERUNG

Einführung in die Programmierung für NF. Algorithmen, Datentypen und Syntax

Klassenvariablen, Klassenmethoden

Transkript:

Fabian Schwarz-Fritz Validating the Evaluation and Prototypical Implementation of Tool Support

2 Agenda Wer bin ich? Die Vorstellung der neun Regeln Validierung der neun Regeln

3 Wer bin ich? Fabian Schwarz-Fritz 21 Jahre 6. Semester Duales Studium bei SAP Studienarbeit an der Dualen Hochschule

4 Calisthenics (von griechisch kalos = schön, gut und sthenos = Kraft) Gymnastikübungen Extrem anstrengend Einfaches Setup Liegestützen, Klimmzüge, Kniebeugen

5 Objektorientierte Gymnastikübungen Im Training 9 extreme Regeln Kleines Projekt Härteste Regelbefolgung ohne Zweifel Im Wettkampf Erfahrung durch Training ThoughtWorks Anthology 2008, Essay von Jeff Bay

6 Validating the Meine Studienarbeit: Tool Support für die Regeln untersuchen Hinweis auf Regelverstoß Erleichterung des Trainings! Verstoß: Regel 1, Zeile 24, Entwicklertag.java

7 Validating the Vorstellung der neun Regeln 1. Nur eine Einrücktiefe pro Methode! 2. Kein else Schlüsselwort! 3. Kapsele alle primitiven Datentypen und Strings! 4. Nur ein Punkt pro Zeile! 5. Keine Abkürzungen! 6. Kleine Entitäten! 7. Keine Klasse mit mehr als zwei Instanzvariablen! 8. Collections nur alleinstehend verwenden! 9. Keine Getter/Setter/Properties!

8 Validating the 1. Nur eine Einrücktiefe pro Methode! Weniger Komplexität Gleiches Abstraktionslevel pro Methode Do one thing Wiederverwendbarkeit

9 Validating the 2. Kein else Schlüsselwort! Alternativen: Early return Polymorphismus

10 3. Kapsele alle primitiven Datentypen und Strings! Problem: Semantik nur über Namen Compiler ausnutzen! Programmlogik in neuen Datentypen

11 4. Nur ein Punkt pro Zeile! Train Wreck Lines : Richtige Kapselung Erfüllt Law of Demeter Weniger komplex

12 5. Keine Abkürzungen! Klasse: BpmPOrder Klasse: BusinessProcessManagerPurchaseOrder Methode: order.retrieveorder() Zwei Wörter für Klassen- und Methodennamen Klassen: BusinessProcessManagerPurchaseOrder Methoden: order.retrieveorder() Abkürzungen schwer verständlich Kontext verwendet

13 6. Kleine Entitäten! Keine Klasse mit mehr als 50 Zeilen Kein Paket mit mehr als 10 Klassen Kleine Einheiten => besser wart- und testbar => Wiederverwendung

14 7. Keine Klasse mit mehr als zwei Instanzvariablen Problem: Niedrige Kohäsion Feingranulares Objektmodell

15 8. Collections nur alleinstehend verwenden ArrayList customers = new ArrayList(); Eine Instanzvariable: die Collection Operationen auf neuem Typ: customers.sendoffer() => Neuer Typ hat Semantik

16 9. Keine Getter/Setter/Properties Datenkapselung Schreibt Tell, don t ask vor Änderung des Kontrollflusses

17 Validierung der Regeln Validierung über Java Development Tools Analyse des Abstrakten Syntaxbaums (AST) AST stellt Syntax und Semantik als Baum zur Verfügung Visitor Pattern

18 Darstellung im Prototyp Information im Editor Information in Tabelle

19 1. Nur eine Einrücktiefe pro Methode! Signatur einrückendes Statement einrückendes Statement Schachtelung von Einrückenden Statements innerhalb einer Methode while, if, switch, for

20 2. Kein else Schlüsselwort! Suche nach jedem else Schlüsselwort im Code

21 3. Kapsele alle primitiven Datentypen und Strings! Kapselt int Wrapper Typen Enthalten nur den einen primitiven/string Typ Nicht-Wrapper Typen Enthalten keinen primitiven/string Typ

22 4. Nur ein Punkt pro Zeile! Statements in einer Zeile Statements in einer Zeile ExpressionStatement, IfStatement, AssertStatement Ignorieren bestimmter Statements ThisStatement, QualifiedNames

23 5. Keine Abkürzungen! Regex Klassennamen BoatRental Methodennamen rentsailboat(); Keine Prüfung der Semantik Variable: Day month = new Day() Klassenname: AbcDef

24 Validating the 6. Kleine Entitäten! Formatierung nicht immer einheitlich Zählen der Zeilen Zählen der Statements im Code Maximal 10 Klassen pro Paket

25 7. Keine Klasse mit mehr als zwei Instanzvariablen Zählen der Instanzvariablen einer Klasse Dritte Instanzvariable

26 8. Collections nur alleinstehend verwenden Wrapper Typen Enthalten nur die Collection Kapselt int Nicht-Wrapper Typen Enthalten keine Collection

27 Validating the 9. Keine Getter/Setter/Properties Typische Struktur der Getter/Setter erkennen Getter: Rückgabe ist member Setter: Zuweisung Parameter zu member

Fabian Schwarz-Fritz Fabian Schwarz-Fritz 0049 172 7679803 fabian@schwarz-fritz.de github/fabianschwarzfritz Vielen Dank! Validating the Evaluation and Prototypical Implementation of Tool Support

29