validating the object calisthenics - .agenda wer bin ich? die object calisthenics vorstellung der

Download Validating the Object Calisthenics - .Agenda Wer bin ich? Die Object Calisthenics Vorstellung der

Post on 04-Jun-2018

212 views

Category:

Documents

0 download

Embed Size (px)

TRANSCRIPT

  • Validating the

    Object Calisthenics Evaluation and Prototypical Implementation

    of Tool Support

    Fabian Schwarz-Fritz

  • Agenda

    Wer bin ich?

    Die Object Calisthenics

    Vorstellung der neun Regeln

    Validierung der neun Regeln

    2

    Validating the

    Object Calisthenics

  • Wer bin ich?

    Fabian Schwarz-Fritz 21 Jahre

    6. Semester

    Duales Studium bei SAP

    Studienarbeit an der Dualen Hochschule

    Validating the

    Object Calisthenics

    3

  • 4

    Object Calisthenics Calisthenics

    (von griechisch kalos = schn, gut und sthenos = Kraft)

    Gymnastikbungen

    Extrem anstrengend

    Einfaches Setup

    Liegesttzen, Klimmzge, Kniebeugen

    Validating the

    Object Calisthenics

  • 5

    Object Calisthenics Objektorientierte

    Gymnastikbungen

    Im Training

    9 extreme Regeln

    Kleines Projekt

    Hrteste Regelbefolgung ohne Zweifel

    Im Wettkampf

    Erfahrung durch Training ThoughtWorks Anthology 2008,

    Essay Object Calisthenics von Jeff Bay

    Validating the

    Object Calisthenics

  • 6

    Validating the Object Calisthenics

    Meine Studienarbeit:

    Tool Support fr die Regeln

    untersuchen

    Hinweis auf Regelversto

    Erleichterung des Trainings

    ! Versto:

    Regel 1, Zeile 24,

    Entwicklertag.java

    Validating the

    Object Calisthenics

  • Vorstellung der neun Regeln 1. Nur eine Einrcktiefe pro Methode!

    2. Kein else Schlsselwort!

    3. Kapsele alle primitiven Datentypen und Strings!

    4. Nur ein Punkt pro Zeile!

    5. Keine Abkrzungen!

    6. Kleine Entitten!

    7. Keine Klasse mit mehr als zwei Instanzvariablen!

    8. Collections nur alleinstehend verwenden!

    9. Keine Getter/Setter/Properties!

    7

    Validating the

    Object Calisthenics

  • 8

    1. Nur eine Einrcktiefe

    pro Methode!

    Weniger Komplexitt

    Gleiches

    Abstraktionslevel pro

    Methode

    Do one thing

    Wiederverwendbarkeit

    Validating the

    Object Calisthenics

  • 9

    2. Kein else Schlsselwort!

    Alternativen:

    Early return

    Polymorphismus

    Validating the

    Object Calisthenics

  • 3. Kapsele alle primitiven

    Datentypen und Strings!

    10

    Problem:

    Semantik nur ber Namen

    Compiler ausnutzen!

    Programmlogik in neuen Datentypen

    Validating the

    Object Calisthenics

  • 4. Nur ein Punkt pro Zeile!

    Richtige Kapselung

    Erfllt Law of Demeter

    Weniger komplex

    11

    Train Wreck Lines:

    Validating the

    Object Calisthenics

  • 5. Keine Abkrzungen!

    Klasse: BpmPOrder

    Klasse: BusinessProcessManagerPurchaseOrder

    Methode: order.retrieveOrder()

    Zwei Wrter fr Klassen- und Methodennamen

    Klassen:

    Methoden:

    12

    Abkrzungen schwer

    verstndlich

    Kontext verwendet

    BusinessProcessManagerPurchaseOrder BusinessProcessManagerPurchaseOrder

    order.retrieveOrder() order.retrieveOrder()

    Validating the

    Object Calisthenics

  • 6. Kleine Entitten!

    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

  • 7. Keine Klasse mit mehr als zwei

    Instanzvariablen Problem: Niedrige Kohsion

    Feingranulares Objektmodell

    14

    Validating the

    Object Calisthenics

  • 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

  • 9. Keine

    Getter/Setter/Properties Datenkapselung

    Schreibt Tell, dont ask vor

    nderung des Kontrollflusses

    16

    Validating the

    Object Calisthenics

  • Validierung der Regeln Validierung ber Java

    Development Tools

    Analyse des Abstrakten

    Syntaxbaums (AST)

    AST stellt Syntax und Semantik

    als Baum zur Verfgung

    Visitor Pattern

    17

    Validating the

    Object Calisthenics

  • Darstellung im Prototyp

    18

    Information im Editor

    Information in Tabelle

    Validating the

    Object Calisthenics

  • 19

    1. Nur eine Einrcktiefe

    pro Methode!

    Signatur

    einrckendes

    Statement

    einrckendes

    Statement

    Schachtelung von Einrckenden Statements innerhalb einer Methode

    while, if, switch, for

    Validating the

    Object Calisthenics

  • 20

    2. Kein else Schlsselwort!

    Suche nach jedem else Schlsselwort im

    Code

    Validating the

    Object Calisthenics

  • 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

  • 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

  • 5. Keine Abkrzungen! Regex

    Klassennamen BoatRental

    Methodennamen rentSailboat();

    Keine Prfung der Semantik

    Variable: Day month = new Day()

    Klassenname: AbcDef

    23

    Validating the

    Object Calisthenics

  • 6. Kleine Entitten! Formatierung nicht immer einheitlich

    Zhlen der Zeilen

    Zhlen der Statements im Code

    Maximal 10 Klassen pro Paket

    24

    Validating the

    Object Calisthenics

  • 7. Keine Klasse mit mehr als zwei

    Instanzvariablen

    Zhlen der Instanzvariablen einer Klasse

    25

    Dritte Instanzvariable

    Validating the

    Object Calisthenics

  • 26

    8. Collections nur alleinstehend

    verwenden

    Wrapper Typen Enthalten nur die

    Collection

    Nicht-Wrapper Typen

    Enthalten keine Collection

    Kapselt int

    Validating the

    Object Calisthenics

  • Validating the

    Object Calisthenics

    27

    9. Keine

    Getter/Setter/Properties

    Typische Struktur der Getter/Setter erkennen

    Getter: Rckgabe 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 Object Calisthenics Evaluation and Prototypical Implementation

    of Tool Support

  • 29

    Validating the

    Object Calisthenics