TDD = bra design?

Preview:

Citation preview

TDD = bra design?KJETIL KLAUSSEN

KJETIL KLAUSSEN 2

Red

GreenRefactor

TDD

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

KJETIL KLAUSSEN 4

Vil TDD føre til

bedre design?

KJETIL KLAUSSEN 5

KJETIL KLAUSSEN 6

KJETIL KLAUSSEN 7

Bedre enn hva?

KJETIL KLAUSSEN 8

OpsTesting

KodingDesign

AnalyseKravspek

KJETIL KLAUSSEN 9

Red

GreenRefactor

TDD

KJETIL KLAUSSEN 10

Kode

Debugging

KJETIL KLAUSSEN 11

KodeDebugging

KJETIL KLAUSSEN 12

Hva er bra design?

KJETIL KLAUSSEN 13

KJETIL KLAUSSEN 14

KJETIL KLAUSSEN 15

KJETIL KLAUSSEN 16

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

- Kjetils postulat

KJETIL KLAUSSEN 17

KJETIL KLAUSSEN 18

KJETIL KLAUSSEN 19

KJETIL KLAUSSEN 20

KJETIL KLAUSSEN 21

KJETIL KLAUSSEN 22

KJETIL KLAUSSEN 24

KJETIL KLAUSSEN 25

Prinsipper

KJETIL KLAUSSEN 26

Patterns

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)

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

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

KJETIL KLAUSSEN 31

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

KJETIL KLAUSSEN 33

Red

GreenRefactor

TDD

KJETIL KLAUSSEN 34

TDD = bra design?

KJETIL KLAUSSEN 35

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

- James O. Coplien

KJETIL KLAUSSEN 36

Prinsipper

KJETIL KLAUSSEN 37

Patterns

KJETIL KLAUSSEN 38

Red

GreenRefactor

TDD

KJETIL KLAUSSEN 39