Top Banner
Validating the Object Calisthenics Evaluation and Prototypical Implementation of Tool Support Fabian Schwarz-Fritz
29

Validating the Object Calisthenics - entwicklertag.de · Agenda Wer bin ich? Die Object Calisthenics Vorstellung der neun Regeln Validierung der neun Regeln 2 Validating the Object

Jun 04, 2018

Download

Documents

phunglien
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Validating the Object Calisthenics - entwicklertag.de · Agenda Wer bin ich? Die Object Calisthenics Vorstellung der neun Regeln Validierung der neun Regeln 2 Validating the Object

Validating the

Object Calisthenics Evaluation and Prototypical Implementation

of Tool Support

Fabian Schwarz-Fritz

Page 2: Validating the Object Calisthenics - entwicklertag.de · Agenda Wer bin ich? Die Object Calisthenics Vorstellung der neun Regeln Validierung der neun Regeln 2 Validating the Object

Agenda

Wer bin ich?

Die Object Calisthenics

Vorstellung der neun Regeln

Validierung der neun Regeln

2

Validating the

Object Calisthenics

Page 3: Validating the Object Calisthenics - entwicklertag.de · Agenda Wer bin ich? Die Object Calisthenics Vorstellung der neun Regeln Validierung der neun Regeln 2 Validating the Object

Wer bin ich?

Fabian Schwarz-Fritz 21 Jahre

6. Semester

Duales Studium bei SAP

Studienarbeit an der Dualen Hochschule

Validating the

Object Calisthenics

3

Page 4: Validating the Object Calisthenics - entwicklertag.de · Agenda Wer bin ich? Die Object Calisthenics Vorstellung der neun Regeln Validierung der neun Regeln 2 Validating the Object

4

Object Calisthenics Calisthenics

(von griechisch kalos = „schön, gut“ und sthenos = „Kraft)

Gymnastikübungen

Extrem anstrengend

Einfaches Setup

Liegestützen, Klimmzüge, Kniebeugen…

Validating the

Object Calisthenics

Page 5: Validating the Object Calisthenics - entwicklertag.de · Agenda Wer bin ich? Die Object Calisthenics Vorstellung der neun Regeln Validierung der neun Regeln 2 Validating the Object

5

Object Calisthenics

Objektorientierte Gymnastikübungen

Im Training

9 extreme Regeln

Kleines Projekt

Härteste Regelbefolgung ohne Zweifel

Im Wettkampf

Erfahrung durch Training ThoughtWorks Anthology 2008,

Essay „Object Calisthenics“ von Jeff Bay

Validating the

Object Calisthenics

Page 6: Validating the Object Calisthenics - entwicklertag.de · Agenda Wer bin ich? Die Object Calisthenics Vorstellung der neun Regeln Validierung der neun Regeln 2 Validating the Object

6

Validating the Object Calisthenics

Meine Studienarbeit:

Tool Support für die Regeln

untersuchen

Hinweis auf Regelverstoß

Erleichterung des Trainings

! Verstoß:

Regel 1, Zeile 24,

Entwicklertag.java

Validating the

Object Calisthenics

Page 7: Validating the Object Calisthenics - entwicklertag.de · Agenda Wer bin ich? Die Object Calisthenics Vorstellung der neun Regeln Validierung der neun Regeln 2 Validating the Object

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!

7

Validating the

Object Calisthenics

Page 8: Validating the Object Calisthenics - entwicklertag.de · Agenda Wer bin ich? Die Object Calisthenics Vorstellung der neun Regeln Validierung der neun Regeln 2 Validating the Object

8

1. Nur eine Einrücktiefe

pro Methode!

Weniger Komplexität

Gleiches

Abstraktionslevel pro

Methode

„Do one thing“

Wiederverwendbarkeit

Validating the

Object Calisthenics

Page 9: Validating the Object Calisthenics - entwicklertag.de · Agenda Wer bin ich? Die Object Calisthenics Vorstellung der neun Regeln Validierung der neun Regeln 2 Validating the Object

9

2. Kein else Schlüsselwort!

Alternativen:

Early return

Polymorphismus

Validating the

Object Calisthenics

Page 10: Validating the Object Calisthenics - entwicklertag.de · Agenda Wer bin ich? Die Object Calisthenics Vorstellung der neun Regeln Validierung der neun Regeln 2 Validating the Object

3. Kapsele alle primitiven

Datentypen und Strings!

10

Problem:

Semantik nur über Namen

Compiler ausnutzen!

Programmlogik in neuen Datentypen

Validating the

Object Calisthenics

Page 11: Validating the Object Calisthenics - entwicklertag.de · Agenda Wer bin ich? Die Object Calisthenics Vorstellung der neun Regeln Validierung der neun Regeln 2 Validating the Object

4. Nur ein Punkt pro Zeile!

Richtige Kapselung

Erfüllt „Law of Demeter”

Weniger komplex

11

„Train Wreck Lines”:

Validating the

Object Calisthenics

Page 12: Validating the Object Calisthenics - entwicklertag.de · Agenda Wer bin ich? Die Object Calisthenics Vorstellung der neun Regeln Validierung der neun Regeln 2 Validating the Object

5. Keine Abkürzungen!

Klasse: BpmPOrder

Klasse: BusinessProcessManagerPurchaseOrder

Methode: order.retrieveOrder()

Zwei Wörter für Klassen- und Methodennamen

Klassen:

Methoden:

12

Abkürzungen schwer

verständlich

Kontext verwendet

BusinessProcessManagerPurchaseOrder BusinessProcessManagerPurchaseOrder

order.retrieveOrder() order.retrieveOrder()

Validating the

Object Calisthenics

Page 13: Validating the Object Calisthenics - entwicklertag.de · Agenda Wer bin ich? Die Object Calisthenics Vorstellung der neun Regeln Validierung der neun Regeln 2 Validating the Object

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

13

Validating the

Object Calisthenics

Page 14: Validating the Object Calisthenics - entwicklertag.de · Agenda Wer bin ich? Die Object Calisthenics Vorstellung der neun Regeln Validierung der neun Regeln 2 Validating the Object

7. Keine Klasse mit mehr als zwei

Instanzvariablen Problem: Niedrige Kohäsion

Feingranulares Objektmodell

14

Validating the

Object Calisthenics

Page 15: Validating the Object Calisthenics - entwicklertag.de · Agenda Wer bin ich? Die Object Calisthenics Vorstellung der neun Regeln Validierung der neun Regeln 2 Validating the Object

8. Collections nur alleinstehend

verwenden ArrayList customers = new ArrayList();

Eine Instanzvariable: die Collection

Operationen auf neuem Typ: customers.sendOffer()

=> Neuer Typ hat Semantik

15

Validating the

Object Calisthenics

Page 16: Validating the Object Calisthenics - entwicklertag.de · Agenda Wer bin ich? Die Object Calisthenics Vorstellung der neun Regeln Validierung der neun Regeln 2 Validating the Object

9. Keine

Getter/Setter/Properties Datenkapselung

Schreibt „Tell, don’t ask” vor

Änderung des Kontrollflusses

16

Validating the

Object Calisthenics

Page 17: Validating the Object Calisthenics - entwicklertag.de · Agenda Wer bin ich? Die Object Calisthenics Vorstellung der neun Regeln Validierung der neun Regeln 2 Validating the Object

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

17

Validating the

Object Calisthenics

Page 18: Validating the Object Calisthenics - entwicklertag.de · Agenda Wer bin ich? Die Object Calisthenics Vorstellung der neun Regeln Validierung der neun Regeln 2 Validating the Object

Darstellung im Prototyp

18

Information im Editor

Information in Tabelle

Validating the

Object Calisthenics

Page 19: Validating the Object Calisthenics - entwicklertag.de · Agenda Wer bin ich? Die Object Calisthenics Vorstellung der neun Regeln Validierung der neun Regeln 2 Validating the Object

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…

Validating the

Object Calisthenics

Page 20: Validating the Object Calisthenics - entwicklertag.de · Agenda Wer bin ich? Die Object Calisthenics Vorstellung der neun Regeln Validierung der neun Regeln 2 Validating the Object

20

2. Kein else Schlüsselwort!

Suche nach jedem else Schlüsselwort im

Code

Validating the

Object Calisthenics

Page 21: Validating the Object Calisthenics - entwicklertag.de · Agenda Wer bin ich? Die Object Calisthenics Vorstellung der neun Regeln Validierung der neun Regeln 2 Validating the Object

21

3. Kapsele alle primitiven

Datentypen und Strings!

Wrapper Typen Enthalten nur den

einen

primitiven/String Typ

Nicht-Wrapper Typen

Enthalten keinen primitiven/String Typ

Kapselt int

Validating the

Object Calisthenics

Page 22: Validating the Object Calisthenics - entwicklertag.de · Agenda Wer bin ich? Die Object Calisthenics Vorstellung der neun Regeln Validierung der neun Regeln 2 Validating the Object

4. Nur ein Punkt pro Zeile!

22

Statements „in einer Zeile“

Statements „in einer Zeile“

Ignorieren bestimmter Statements ThisStatement, QualifiedNames…

ExpressionStatement, IfStatement, AssertStatement…

Validating the

Object Calisthenics

Page 23: Validating the Object Calisthenics - entwicklertag.de · Agenda Wer bin ich? Die Object Calisthenics Vorstellung der neun Regeln Validierung der neun Regeln 2 Validating the Object

5. Keine Abkürzungen! Regex

Klassennamen BoatRental

Methodennamen rentSailboat();

Keine Prüfung der Semantik

Variable: Day month = new Day()

Klassenname: AbcDef

23

Validating the

Object Calisthenics

Page 24: Validating the Object Calisthenics - entwicklertag.de · Agenda Wer bin ich? Die Object Calisthenics Vorstellung der neun Regeln Validierung der neun Regeln 2 Validating the Object

6. Kleine Entitäten! Formatierung nicht immer einheitlich

Zählen der Zeilen

Zählen der Statements im Code

Maximal 10 Klassen pro Paket

24

Validating the

Object Calisthenics

Page 25: Validating the Object Calisthenics - entwicklertag.de · Agenda Wer bin ich? Die Object Calisthenics Vorstellung der neun Regeln Validierung der neun Regeln 2 Validating the Object

7. Keine Klasse mit mehr als zwei

Instanzvariablen

Zählen der Instanzvariablen einer Klasse

25

Dritte Instanzvariable

Validating the

Object Calisthenics

Page 26: Validating the Object Calisthenics - entwicklertag.de · Agenda Wer bin ich? Die Object Calisthenics Vorstellung der neun Regeln Validierung der neun Regeln 2 Validating the Object

26

8. Collections nur alleinstehend

verwenden

Wrapper Typen Enthalten nur die

Collection

Nicht-Wrapper Typen

Enthalten keine Collection

Kapselt int

Validating the

Object Calisthenics

Page 27: Validating the Object Calisthenics - entwicklertag.de · Agenda Wer bin ich? Die Object Calisthenics Vorstellung der neun Regeln Validierung der neun Regeln 2 Validating the Object

Validating the

Object Calisthenics

27

9. Keine

Getter/Setter/Properties

Typische Struktur der Getter/Setter erkennen

Getter: Rückgabe ist

member

Setter: Zuweisung Parameter zu member

Page 28: Validating the Object Calisthenics - entwicklertag.de · Agenda Wer bin ich? Die Object Calisthenics Vorstellung der neun Regeln Validierung der neun Regeln 2 Validating the Object

Fabian Schwarz-Fritz Fabian Schwarz-Fritz

0049 172 7679803 [email protected]

github/fabianschwarzfritz

Vielen Dank!

Validating the Object Calisthenics Evaluation and Prototypical Implementation

of Tool Support

Page 29: Validating the Object Calisthenics - entwicklertag.de · Agenda Wer bin ich? Die Object Calisthenics Vorstellung der neun Regeln Validierung der neun Regeln 2 Validating the Object

29

Validating the

Object Calisthenics