Upload
kjetil-klaussen
View
27
Download
2
Embed Size (px)
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