39
TDD = bra design? KJETIL KLAUSSEN

TDD = bra design?

Embed Size (px)

Citation preview

Page 1: TDD = bra design?

TDD = bra design?KJETIL KLAUSSEN

Page 2: TDD = bra design?

KJETIL KLAUSSEN 2

Red

GreenRefactor

TDD

Page 3: TDD = bra design?

KJETIL KLAUSSEN 3

Red

GreenRefactor

TDD

1. Skriv test

2. Sjekk at testen feiler

3. Implementer

4. Sjekk at alle tester er OK

6. Sjekk at alle tester er OK

5. Forbedring

Page 4: TDD = bra design?

KJETIL KLAUSSEN 4

Vil TDD føre til

bedre design?

Page 5: TDD = bra design?

KJETIL KLAUSSEN 5

Page 6: TDD = bra design?

KJETIL KLAUSSEN 6

Page 7: TDD = bra design?

KJETIL KLAUSSEN 7

Bedre enn hva?

Page 8: TDD = bra design?

KJETIL KLAUSSEN 8

OpsTesting

KodingDesign

AnalyseKravspek

Page 9: TDD = bra design?

KJETIL KLAUSSEN 9

Red

GreenRefactor

TDD

Page 10: TDD = bra design?

KJETIL KLAUSSEN 10

Kode

Debugging

Page 11: TDD = bra design?

KJETIL KLAUSSEN 11

KodeDebugging

Page 12: TDD = bra design?

KJETIL KLAUSSEN 12

Hva er bra design?

Page 13: TDD = bra design?

KJETIL KLAUSSEN 13

Page 14: TDD = bra design?

KJETIL KLAUSSEN 14

Page 15: TDD = bra design?

KJETIL KLAUSSEN 15

Page 16: TDD = bra design?

KJETIL KLAUSSEN 16

Man må vite hva bra design er hvis man ønsker å skape det

- Kjetils postulat

Page 17: TDD = bra design?

KJETIL KLAUSSEN 17

Page 18: TDD = bra design?

KJETIL KLAUSSEN 18

Page 19: TDD = bra design?

KJETIL KLAUSSEN 19

Page 20: TDD = bra design?

KJETIL KLAUSSEN 20

Page 21: TDD = bra design?

KJETIL KLAUSSEN 21

Page 22: TDD = bra design?

KJETIL KLAUSSEN 22

Page 23: TDD = bra design?
Page 24: TDD = bra design?

KJETIL KLAUSSEN 24

Page 25: TDD = bra design?

KJETIL KLAUSSEN 25

Prinsipper

Page 26: TDD = bra design?

KJETIL KLAUSSEN 26

Patterns

Page 27: TDD = bra design?

KJETIL KLAUSSEN 27

Prinsipper Domain-driven design (DDD) Single responsibility (SRP) Open/closed (OCP) Liskov’s substitution (LSP) Interface segregation (ISP) Dependency inversion (DIP) Law of Demeter (LoD) Tell, don’t ask Principle of least surprise (PoLP)

Design by Contract Feature envy High cohesion / low coupling 4 rules of simple design (4RoSD) Balanced abstraction Separation of concerns (SoC) You ain’t gonna need it (YAGNI) Don’t repeat yourself (DRY) Keep it simple stupid (KISS)

Page 28: TDD = bra design?

KJETIL KLAUSSEN 28

Design Patterns Factory Singelton Monostate Prototype Adapter Bridge Composite Decorator Facade

Flyweight Proxy Command Mediator Memento Null Object Specification State Strategy

Template method Visitor Repository Aggregate Entity Value Object Model View Controller Model View Presenter

Page 29: TDD = bra design?

KJETIL KLAUSSEN 29

Architectural Patterns Structure

◦ Component-based (CBSE)

◦ Monolithic◦ Layered◦ Pipes and filters

Shared Memory◦ Data-centric◦ Blackboard◦ Rule-based

Messaging◦ Event-driven (EDA)◦ Pub-sub◦ Message-oriented

Adaptable◦ Plug-ins◦ Microkernel◦ Reflection◦ DSL

Distributed◦ Client-server◦ Shared nothing (SN)◦ Space-based◦ Object request broker◦ Peer-to-peer◦ REST◦ Service-oriented◦ Microservices

Page 30: TDD = bra design?
Page 31: TDD = bra design?

KJETIL KLAUSSEN 31

Page 32: TDD = bra design?

KJETIL KLAUSSEN 32

"You can't do good design without experience. When less experienced people do TDD they typically don't refactor enough, leading to sub-optimal designs"

- Martin Fowler

Page 33: TDD = bra design?

KJETIL KLAUSSEN 33

Red

GreenRefactor

TDD

Page 34: TDD = bra design?

KJETIL KLAUSSEN 34

TDD = bra design?

Page 35: TDD = bra design?

KJETIL KLAUSSEN 35

"Be humble about what tests can achieve. Tests don’t improve quality: developers do."

- James O. Coplien

Page 36: TDD = bra design?

KJETIL KLAUSSEN 36

Prinsipper

Page 37: TDD = bra design?

KJETIL KLAUSSEN 37

Patterns

Page 38: TDD = bra design?

KJETIL KLAUSSEN 38

Red

GreenRefactor

TDD

Page 39: TDD = bra design?

KJETIL KLAUSSEN 39