emergentes design mit tdd · london school tdd outside-in design from growing object-oriented...

19
Emergentes Design mit TDD Clean Code Days David Völkel 04.11.2015

Upload: others

Post on 25-Jun-2020

0 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Emergentes Design mit TDD · London School TDD Outside-In Design From Growing Object-Oriented Software by Nat Pryce and Steve Freeman UI Domain Service Repository DB Adapter DB End2End

Emergentes Design mit TDD

Clean Code Days

David Völkel

04.11.2015

Page 2: Emergentes Design mit TDD · London School TDD Outside-In Design From Growing Object-Oriented Software by Nat Pryce and Steve Freeman UI Domain Service Repository DB Adapter DB End2End

@davidvoelkel

TDD & Design

@codecentric

@softwerkskammer

Page 3: Emergentes Design mit TDD · London School TDD Outside-In Design From Growing Object-Oriented Software by Nat Pryce and Steve Freeman UI Domain Service Repository DB Adapter DB End2End

Big Design Up Front

Page 4: Emergentes Design mit TDD · London School TDD Outside-In Design From Growing Object-Oriented Software by Nat Pryce and Steve Freeman UI Domain Service Repository DB Adapter DB End2End

TDD

Fehlschlagender Test

Minimale Implementierung

Refactoring

red

refactor

green

Page 5: Emergentes Design mit TDD · London School TDD Outside-In Design From Growing Object-Oriented Software by Nat Pryce and Steve Freeman UI Domain Service Repository DB Adapter DB End2End

Emergentes Design

Entsteht kontinuierlich

Page 6: Emergentes Design mit TDD · London School TDD Outside-In Design From Growing Object-Oriented Software by Nat Pryce and Steve Freeman UI Domain Service Repository DB Adapter DB End2End

London School TDD

„Mockists“

ATDD

From Growing Object-Oriented Software

by Nat Pryce and Steve Freeman

Page 7: Emergentes Design mit TDD · London School TDD Outside-In Design From Growing Object-Oriented Software by Nat Pryce and Steve Freeman UI Domain Service Repository DB Adapter DB End2End

London School TDD

Outside-In

Design

From Growing Object-Oriented Software

by Nat Pryce and Steve Freeman

UI

Domain Service

Repository DB Adapter

DB

End2End Test

Page 8: Emergentes Design mit TDD · London School TDD Outside-In Design From Growing Object-Oriented Software by Nat Pryce and Steve Freeman UI Domain Service Repository DB Adapter DB End2End

London School TDD

From Growing Object-Oriented Software

by Nat Pryce and Steve Freeman

UI

Domain Service

Repository DB Adapter

DB

End2End Test

Unit Test

Page 9: Emergentes Design mit TDD · London School TDD Outside-In Design From Growing Object-Oriented Software by Nat Pryce and Steve Freeman UI Domain Service Repository DB Adapter DB End2End

London School TDD

Mocking!

From Growing Object-Oriented Software

by Nat Pryce and Steve Freeman

UI

Domain Service

Repository DB Adapter

DB

End2End Test

Unit Test

Page 10: Emergentes Design mit TDD · London School TDD Outside-In Design From Growing Object-Oriented Software by Nat Pryce and Steve Freeman UI Domain Service Repository DB Adapter DB End2End

London School TDD

Mocking!

From Growing Object-Oriented Software

by Nat Pryce and Steve Freeman

UI

Domain Service

Repository DB Adapter

DB

End2End Test

Unit Test

Unit Test

Unit Test

Page 11: Emergentes Design mit TDD · London School TDD Outside-In Design From Growing Object-Oriented Software by Nat Pryce and Steve Freeman UI Domain Service Repository DB Adapter DB End2End

London School TDD

From Growing Object-Oriented Software

by Nat Pryce and Steve Freeman

UI

Domain Service

Repository DB Adapter

DB

End2End Test

Unit Test

Unit Test

Unit Test

Unit Test

Unit Test

Integration

Test

Page 12: Emergentes Design mit TDD · London School TDD Outside-In Design From Growing Object-Oriented Software by Nat Pryce and Steve Freeman UI Domain Service Repository DB Adapter DB End2End

London School TDD

From Growing Object-Oriented Software

by Nat Pryce and Steve Freeman

UI

Domain Service

Repository DB Adapter

DB

End2End Test

Unit Test

Unit Test

Unit Test

Unit Test

Unit Test

Integration

Test

Page 13: Emergentes Design mit TDD · London School TDD Outside-In Design From Growing Object-Oriented Software by Nat Pryce and Steve Freeman UI Domain Service Repository DB Adapter DB End2End

Detroit School TDD

„Classicists“

Mocks nur an Systemgrenzen

(Meist) Inside-Out/Bottom-Up

Page 14: Emergentes Design mit TDD · London School TDD Outside-In Design From Growing Object-Oriented Software by Nat Pryce and Steve Freeman UI Domain Service Repository DB Adapter DB End2End

4 Rules of Simple Design

1. Pass all Tests

2. Clear, Expressive & Consistent

3. No Duplication

4. Minimal Units

Page 15: Emergentes Design mit TDD · London School TDD Outside-In Design From Growing Object-Oriented Software by Nat Pryce and Steve Freeman UI Domain Service Repository DB Adapter DB End2End

Emergentes Design

Entsteht kontinuierlich

Minimal, aber brauchbar

Page 16: Emergentes Design mit TDD · London School TDD Outside-In Design From Growing Object-Oriented Software by Nat Pryce and Steve Freeman UI Domain Service Repository DB Adapter DB End2End

Gefahren

Big Picture?

Akzeptanztests

Refactoring

Disziplin

Designskills nötig

Emergent

Design

Page 17: Emergentes Design mit TDD · London School TDD Outside-In Design From Growing Object-Oriented Software by Nat Pryce and Steve Freeman UI Domain Service Repository DB Adapter DB End2End

London vs. Detroit Design

Outside-In

Absehbarer

Refactoring & Tests Schreiben

Inside-Out

Unbekannter, „emergenter“

Refactoring

Page 18: Emergentes Design mit TDD · London School TDD Outside-In Design From Growing Object-Oriented Software by Nat Pryce and Steve Freeman UI Domain Service Repository DB Adapter DB End2End