solidify your code - oodrive · 2019. 5. 29. · solid robert c. martin - agile software...
TRANSCRIPT
![Page 1: SOLIDify your code - Oodrive · 2019. 5. 29. · SOLID Robert C. Martin - Agile Software Development (2003) 5 Principles - S. O. L. I. D. Object Oriented design About Software Maintainability](https://reader035.vdocuments.site/reader035/viewer/2022071016/5fcee100282d8614b33e294c/html5/thumbnails/1.jpg)
SOLIDify your codeArnaud Bellizzi
![Page 2: SOLIDify your code - Oodrive · 2019. 5. 29. · SOLID Robert C. Martin - Agile Software Development (2003) 5 Principles - S. O. L. I. D. Object Oriented design About Software Maintainability](https://reader035.vdocuments.site/reader035/viewer/2022071016/5fcee100282d8614b33e294c/html5/thumbnails/2.jpg)
About me@Oodrive (since 2013)
Team Backup & Archive
Architect
![Page 3: SOLIDify your code - Oodrive · 2019. 5. 29. · SOLID Robert C. Martin - Agile Software Development (2003) 5 Principles - S. O. L. I. D. Object Oriented design About Software Maintainability](https://reader035.vdocuments.site/reader035/viewer/2022071016/5fcee100282d8614b33e294c/html5/thumbnails/3.jpg)
SOLID● Robert C. Martin - Agile Software Development (2003)
● 5 Principles - S. O. L. I. D.
● Object Oriented design
● About Software Maintainability
![Page 4: SOLIDify your code - Oodrive · 2019. 5. 29. · SOLID Robert C. Martin - Agile Software Development (2003) 5 Principles - S. O. L. I. D. Object Oriented design About Software Maintainability](https://reader035.vdocuments.site/reader035/viewer/2022071016/5fcee100282d8614b33e294c/html5/thumbnails/4.jpg)
Rubber Duck Debugging
![Page 5: SOLIDify your code - Oodrive · 2019. 5. 29. · SOLID Robert C. Martin - Agile Software Development (2003) 5 Principles - S. O. L. I. D. Object Oriented design About Software Maintainability](https://reader035.vdocuments.site/reader035/viewer/2022071016/5fcee100282d8614b33e294c/html5/thumbnails/5.jpg)
SOLID PrinciplesSingle Responsibility “One class - One reason to change”
![Page 6: SOLIDify your code - Oodrive · 2019. 5. 29. · SOLID Robert C. Martin - Agile Software Development (2003) 5 Principles - S. O. L. I. D. Object Oriented design About Software Maintainability](https://reader035.vdocuments.site/reader035/viewer/2022071016/5fcee100282d8614b33e294c/html5/thumbnails/6.jpg)
SOLID PrinciplesSingle Responsibility
Open/Closed
“One class - One reason to change”
“Open for extension, Closed for modification”
![Page 7: SOLIDify your code - Oodrive · 2019. 5. 29. · SOLID Robert C. Martin - Agile Software Development (2003) 5 Principles - S. O. L. I. D. Object Oriented design About Software Maintainability](https://reader035.vdocuments.site/reader035/viewer/2022071016/5fcee100282d8614b33e294c/html5/thumbnails/7.jpg)
SOLID PrinciplesSingle Responsibility
Open/Closed
Liskov Substitution
“One class - One reason to change”
“Open for extension, Closed for modification”
“Subtyping should not break anything”
![Page 8: SOLIDify your code - Oodrive · 2019. 5. 29. · SOLID Robert C. Martin - Agile Software Development (2003) 5 Principles - S. O. L. I. D. Object Oriented design About Software Maintainability](https://reader035.vdocuments.site/reader035/viewer/2022071016/5fcee100282d8614b33e294c/html5/thumbnails/8.jpg)
SOLID PrinciplesSingle Responsibility
Open/Closed
Liskov Substitution
Interface Segregation
“One class - One reason to change”
“Open for extension, Closed for modification”
“Subtyping should not break anything”
“Use small cohesive interfaces”
![Page 9: SOLIDify your code - Oodrive · 2019. 5. 29. · SOLID Robert C. Martin - Agile Software Development (2003) 5 Principles - S. O. L. I. D. Object Oriented design About Software Maintainability](https://reader035.vdocuments.site/reader035/viewer/2022071016/5fcee100282d8614b33e294c/html5/thumbnails/9.jpg)
SOLID PrinciplesSingle Responsibility
Open/Closed
Liskov Substitution
Interface Segregation
Dependency Inversion
“One class - One reason to change”
“Open for extension, Closed for modification”
“Subtyping should not break anything”
“Use small cohesive interfaces”
![Page 10: SOLIDify your code - Oodrive · 2019. 5. 29. · SOLID Robert C. Martin - Agile Software Development (2003) 5 Principles - S. O. L. I. D. Object Oriented design About Software Maintainability](https://reader035.vdocuments.site/reader035/viewer/2022071016/5fcee100282d8614b33e294c/html5/thumbnails/10.jpg)
Wait, I lied
![Page 11: SOLIDify your code - Oodrive · 2019. 5. 29. · SOLID Robert C. Martin - Agile Software Development (2003) 5 Principles - S. O. L. I. D. Object Oriented design About Software Maintainability](https://reader035.vdocuments.site/reader035/viewer/2022071016/5fcee100282d8614b33e294c/html5/thumbnails/11.jpg)
Wait, I lied
SOLI Dify your code
![Page 12: SOLIDify your code - Oodrive · 2019. 5. 29. · SOLID Robert C. Martin - Agile Software Development (2003) 5 Principles - S. O. L. I. D. Object Oriented design About Software Maintainability](https://reader035.vdocuments.site/reader035/viewer/2022071016/5fcee100282d8614b33e294c/html5/thumbnails/12.jpg)
Dependency Inversion Principle
1. High-level modules should not depend on low-level modules.
![Page 13: SOLIDify your code - Oodrive · 2019. 5. 29. · SOLID Robert C. Martin - Agile Software Development (2003) 5 Principles - S. O. L. I. D. Object Oriented design About Software Maintainability](https://reader035.vdocuments.site/reader035/viewer/2022071016/5fcee100282d8614b33e294c/html5/thumbnails/13.jpg)
Dependency Inversion Principle
1. High-level modules should not depend on low-level modules. Both should depend on abstractions.
![Page 14: SOLIDify your code - Oodrive · 2019. 5. 29. · SOLID Robert C. Martin - Agile Software Development (2003) 5 Principles - S. O. L. I. D. Object Oriented design About Software Maintainability](https://reader035.vdocuments.site/reader035/viewer/2022071016/5fcee100282d8614b33e294c/html5/thumbnails/14.jpg)
Dependency Inversion Principle
1. High-level modules should not depend on low-level modules. Both should depend on abstractions.
2. Abstractions should not depend on details.
![Page 15: SOLIDify your code - Oodrive · 2019. 5. 29. · SOLID Robert C. Martin - Agile Software Development (2003) 5 Principles - S. O. L. I. D. Object Oriented design About Software Maintainability](https://reader035.vdocuments.site/reader035/viewer/2022071016/5fcee100282d8614b33e294c/html5/thumbnails/15.jpg)
Dependency Inversion Principle
1. High-level modules should not depend on low-level modules. Both should depend on abstractions.
2. Abstractions should not depend on details.Details should depend on abstractions.
![Page 16: SOLIDify your code - Oodrive · 2019. 5. 29. · SOLID Robert C. Martin - Agile Software Development (2003) 5 Principles - S. O. L. I. D. Object Oriented design About Software Maintainability](https://reader035.vdocuments.site/reader035/viewer/2022071016/5fcee100282d8614b33e294c/html5/thumbnails/16.jpg)
Dependencies
A B
![Page 17: SOLIDify your code - Oodrive · 2019. 5. 29. · SOLID Robert C. Martin - Agile Software Development (2003) 5 Principles - S. O. L. I. D. Object Oriented design About Software Maintainability](https://reader035.vdocuments.site/reader035/viewer/2022071016/5fcee100282d8614b33e294c/html5/thumbnails/17.jpg)
Dependencies
A B
doBThing()
![Page 18: SOLIDify your code - Oodrive · 2019. 5. 29. · SOLID Robert C. Martin - Agile Software Development (2003) 5 Principles - S. O. L. I. D. Object Oriented design About Software Maintainability](https://reader035.vdocuments.site/reader035/viewer/2022071016/5fcee100282d8614b33e294c/html5/thumbnails/18.jpg)
Dependencies
A BCalls
doBThing()
![Page 19: SOLIDify your code - Oodrive · 2019. 5. 29. · SOLID Robert C. Martin - Agile Software Development (2003) 5 Principles - S. O. L. I. D. Object Oriented design About Software Maintainability](https://reader035.vdocuments.site/reader035/viewer/2022071016/5fcee100282d8614b33e294c/html5/thumbnails/19.jpg)
Dependencies
A BCalls
doBThing()b.doBThing()
![Page 20: SOLIDify your code - Oodrive · 2019. 5. 29. · SOLID Robert C. Martin - Agile Software Development (2003) 5 Principles - S. O. L. I. D. Object Oriented design About Software Maintainability](https://reader035.vdocuments.site/reader035/viewer/2022071016/5fcee100282d8614b33e294c/html5/thumbnails/20.jpg)
Dependencies
A BCalls
Imports
b.doBThing() doBThing()
![Page 21: SOLIDify your code - Oodrive · 2019. 5. 29. · SOLID Robert C. Martin - Agile Software Development (2003) 5 Principles - S. O. L. I. D. Object Oriented design About Software Maintainability](https://reader035.vdocuments.site/reader035/viewer/2022071016/5fcee100282d8614b33e294c/html5/thumbnails/21.jpg)
Dependencies + Change
A BCalls
Imports
doBThing()doBetter()
b.doBThing()
![Page 22: SOLIDify your code - Oodrive · 2019. 5. 29. · SOLID Robert C. Martin - Agile Software Development (2003) 5 Principles - S. O. L. I. D. Object Oriented design About Software Maintainability](https://reader035.vdocuments.site/reader035/viewer/2022071016/5fcee100282d8614b33e294c/html5/thumbnails/22.jpg)
Dependencies + Change
A BCalls
Imports
b.doBThing()b.doBetter()
doBThing()doBetter()
![Page 23: SOLIDify your code - Oodrive · 2019. 5. 29. · SOLID Robert C. Martin - Agile Software Development (2003) 5 Principles - S. O. L. I. D. Object Oriented design About Software Maintainability](https://reader035.vdocuments.site/reader035/viewer/2022071016/5fcee100282d8614b33e294c/html5/thumbnails/23.jpg)
Dependencies + Change
A BCalls
Imports
Changes in B imply changes in A
![Page 24: SOLIDify your code - Oodrive · 2019. 5. 29. · SOLID Robert C. Martin - Agile Software Development (2003) 5 Principles - S. O. L. I. D. Object Oriented design About Software Maintainability](https://reader035.vdocuments.site/reader035/viewer/2022071016/5fcee100282d8614b33e294c/html5/thumbnails/24.jpg)
Dependencies + Change
A BCalls
Imports
Changes in B imply changes in A
External API Business
![Page 25: SOLIDify your code - Oodrive · 2019. 5. 29. · SOLID Robert C. Martin - Agile Software Development (2003) 5 Principles - S. O. L. I. D. Object Oriented design About Software Maintainability](https://reader035.vdocuments.site/reader035/viewer/2022071016/5fcee100282d8614b33e294c/html5/thumbnails/25.jpg)
Dependencies + Change
A BCalls
Imports
Changes in B imply changes in A
External API Business
![Page 26: SOLIDify your code - Oodrive · 2019. 5. 29. · SOLID Robert C. Martin - Agile Software Development (2003) 5 Principles - S. O. L. I. D. Object Oriented design About Software Maintainability](https://reader035.vdocuments.site/reader035/viewer/2022071016/5fcee100282d8614b33e294c/html5/thumbnails/26.jpg)
Dependencies + Change
A BCalls
Imports
Changes in B imply changes in A
Business Persistence
![Page 27: SOLIDify your code - Oodrive · 2019. 5. 29. · SOLID Robert C. Martin - Agile Software Development (2003) 5 Principles - S. O. L. I. D. Object Oriented design About Software Maintainability](https://reader035.vdocuments.site/reader035/viewer/2022071016/5fcee100282d8614b33e294c/html5/thumbnails/27.jpg)
Dependencies + Change
A BCalls
Imports
Changes in B imply changes in A
PersistenceBusiness
![Page 28: SOLIDify your code - Oodrive · 2019. 5. 29. · SOLID Robert C. Martin - Agile Software Development (2003) 5 Principles - S. O. L. I. D. Object Oriented design About Software Maintainability](https://reader035.vdocuments.site/reader035/viewer/2022071016/5fcee100282d8614b33e294c/html5/thumbnails/28.jpg)
DependenciesThere is a problem when . . .
![Page 29: SOLIDify your code - Oodrive · 2019. 5. 29. · SOLID Robert C. Martin - Agile Software Development (2003) 5 Principles - S. O. L. I. D. Object Oriented design About Software Maintainability](https://reader035.vdocuments.site/reader035/viewer/2022071016/5fcee100282d8614b33e294c/html5/thumbnails/29.jpg)
DependenciesThere is a problem when . . .
B changes often
![Page 30: SOLIDify your code - Oodrive · 2019. 5. 29. · SOLID Robert C. Martin - Agile Software Development (2003) 5 Principles - S. O. L. I. D. Object Oriented design About Software Maintainability](https://reader035.vdocuments.site/reader035/viewer/2022071016/5fcee100282d8614b33e294c/html5/thumbnails/30.jpg)
DependenciesThere is a problem when . . .
B changes often
We want to Reuse A
![Page 31: SOLIDify your code - Oodrive · 2019. 5. 29. · SOLID Robert C. Martin - Agile Software Development (2003) 5 Principles - S. O. L. I. D. Object Oriented design About Software Maintainability](https://reader035.vdocuments.site/reader035/viewer/2022071016/5fcee100282d8614b33e294c/html5/thumbnails/31.jpg)
Dependency Inversion Principle
1. High-level modules should not depend on low-level modules. Both should depend on abstractions.
2. Abstractions should not depend on details.Details should depend on abstractions.
![Page 32: SOLIDify your code - Oodrive · 2019. 5. 29. · SOLID Robert C. Martin - Agile Software Development (2003) 5 Principles - S. O. L. I. D. Object Oriented design About Software Maintainability](https://reader035.vdocuments.site/reader035/viewer/2022071016/5fcee100282d8614b33e294c/html5/thumbnails/32.jpg)
Dependencies Inverted
BIZ
![Page 33: SOLIDify your code - Oodrive · 2019. 5. 29. · SOLID Robert C. Martin - Agile Software Development (2003) 5 Principles - S. O. L. I. D. Object Oriented design About Software Maintainability](https://reader035.vdocuments.site/reader035/viewer/2022071016/5fcee100282d8614b33e294c/html5/thumbnails/33.jpg)
Dependencies Inverted
BIZ I
store(...)
![Page 34: SOLIDify your code - Oodrive · 2019. 5. 29. · SOLID Robert C. Martin - Agile Software Development (2003) 5 Principles - S. O. L. I. D. Object Oriented design About Software Maintainability](https://reader035.vdocuments.site/reader035/viewer/2022071016/5fcee100282d8614b33e294c/html5/thumbnails/34.jpg)
Dependencies Inverted
BIZ IImports
store(...)i.store(...)
![Page 35: SOLIDify your code - Oodrive · 2019. 5. 29. · SOLID Robert C. Martin - Agile Software Development (2003) 5 Principles - S. O. L. I. D. Object Oriented design About Software Maintainability](https://reader035.vdocuments.site/reader035/viewer/2022071016/5fcee100282d8614b33e294c/html5/thumbnails/35.jpg)
Dependencies Inverted
BIZ PERIImports Implements
store(...)i.store(...)
![Page 36: SOLIDify your code - Oodrive · 2019. 5. 29. · SOLID Robert C. Martin - Agile Software Development (2003) 5 Principles - S. O. L. I. D. Object Oriented design About Software Maintainability](https://reader035.vdocuments.site/reader035/viewer/2022071016/5fcee100282d8614b33e294c/html5/thumbnails/36.jpg)
Dependencies Inverted
BIZ PERIImports Implements
i.store(...) store(...) store(...)
![Page 37: SOLIDify your code - Oodrive · 2019. 5. 29. · SOLID Robert C. Martin - Agile Software Development (2003) 5 Principles - S. O. L. I. D. Object Oriented design About Software Maintainability](https://reader035.vdocuments.site/reader035/viewer/2022071016/5fcee100282d8614b33e294c/html5/thumbnails/37.jpg)
Dependencies Inverted
BIZ PERIImports Implements
i.store(...) store(...)
Injection
store(...)
![Page 38: SOLIDify your code - Oodrive · 2019. 5. 29. · SOLID Robert C. Martin - Agile Software Development (2003) 5 Principles - S. O. L. I. D. Object Oriented design About Software Maintainability](https://reader035.vdocuments.site/reader035/viewer/2022071016/5fcee100282d8614b33e294c/html5/thumbnails/38.jpg)
Dependencies Inverted
BIZ PERIImports Implements
i.store(...) store(...)
ScansInjection
store(...)
![Page 39: SOLIDify your code - Oodrive · 2019. 5. 29. · SOLID Robert C. Martin - Agile Software Development (2003) 5 Principles - S. O. L. I. D. Object Oriented design About Software Maintainability](https://reader035.vdocuments.site/reader035/viewer/2022071016/5fcee100282d8614b33e294c/html5/thumbnails/39.jpg)
Dependencies Inverted
BIZ PERIImports Implements
i.store(...) store(...)
InjectionInjects
store(...)
![Page 40: SOLIDify your code - Oodrive · 2019. 5. 29. · SOLID Robert C. Martin - Agile Software Development (2003) 5 Principles - S. O. L. I. D. Object Oriented design About Software Maintainability](https://reader035.vdocuments.site/reader035/viewer/2022071016/5fcee100282d8614b33e294c/html5/thumbnails/40.jpg)
Dependencies Inverted
BIZ PERIImports Implements
i.store(...) store(...)
Injection
Calls
store(...)
![Page 41: SOLIDify your code - Oodrive · 2019. 5. 29. · SOLID Robert C. Martin - Agile Software Development (2003) 5 Principles - S. O. L. I. D. Object Oriented design About Software Maintainability](https://reader035.vdocuments.site/reader035/viewer/2022071016/5fcee100282d8614b33e294c/html5/thumbnails/41.jpg)
Dependencies Inverted + Change
BIZ PERIImports Implements
i.store(...) store(...) store(...)
Changes in PER are restricted by Contract
![Page 42: SOLIDify your code - Oodrive · 2019. 5. 29. · SOLID Robert C. Martin - Agile Software Development (2003) 5 Principles - S. O. L. I. D. Object Oriented design About Software Maintainability](https://reader035.vdocuments.site/reader035/viewer/2022071016/5fcee100282d8614b33e294c/html5/thumbnails/42.jpg)
Dependencies Inverted + Change
BIZ PERIImports Implements
i.store(...) store(...) store(...)
Changes in Contract affect BIZ & PER
![Page 43: SOLIDify your code - Oodrive · 2019. 5. 29. · SOLID Robert C. Martin - Agile Software Development (2003) 5 Principles - S. O. L. I. D. Object Oriented design About Software Maintainability](https://reader035.vdocuments.site/reader035/viewer/2022071016/5fcee100282d8614b33e294c/html5/thumbnails/43.jpg)
Dependencies Inverted + Change
BIZ PERIOwns Implements
i.store(...) store(...) store(...)
BIZ owns the Contract
![Page 44: SOLIDify your code - Oodrive · 2019. 5. 29. · SOLID Robert C. Martin - Agile Software Development (2003) 5 Principles - S. O. L. I. D. Object Oriented design About Software Maintainability](https://reader035.vdocuments.site/reader035/viewer/2022071016/5fcee100282d8614b33e294c/html5/thumbnails/44.jpg)
Dependencies Inverted + Change
BIZ PERIOwns Implements
i.store(...) store(...) store(...)
Changes in PER are unseen by BIZ
![Page 45: SOLIDify your code - Oodrive · 2019. 5. 29. · SOLID Robert C. Martin - Agile Software Development (2003) 5 Principles - S. O. L. I. D. Object Oriented design About Software Maintainability](https://reader035.vdocuments.site/reader035/viewer/2022071016/5fcee100282d8614b33e294c/html5/thumbnails/45.jpg)
Dependencies Inverted + Change
BIZ PERIOwns Implements
i.store(...) store(...) store(...)
Changes in PER are unseen by BIZ
![Page 46: SOLIDify your code - Oodrive · 2019. 5. 29. · SOLID Robert C. Martin - Agile Software Development (2003) 5 Principles - S. O. L. I. D. Object Oriented design About Software Maintainability](https://reader035.vdocuments.site/reader035/viewer/2022071016/5fcee100282d8614b33e294c/html5/thumbnails/46.jpg)
Costs
- Requires more code
![Page 47: SOLIDify your code - Oodrive · 2019. 5. 29. · SOLID Robert C. Martin - Agile Software Development (2003) 5 Principles - S. O. L. I. D. Object Oriented design About Software Maintainability](https://reader035.vdocuments.site/reader035/viewer/2022071016/5fcee100282d8614b33e294c/html5/thumbnails/47.jpg)
Costs
- Requires more code
- Performance overhead
![Page 48: SOLIDify your code - Oodrive · 2019. 5. 29. · SOLID Robert C. Martin - Agile Software Development (2003) 5 Principles - S. O. L. I. D. Object Oriented design About Software Maintainability](https://reader035.vdocuments.site/reader035/viewer/2022071016/5fcee100282d8614b33e294c/html5/thumbnails/48.jpg)
Costs
- Requires more code
- Performance overhead
- Where is my implementation ?
![Page 49: SOLIDify your code - Oodrive · 2019. 5. 29. · SOLID Robert C. Martin - Agile Software Development (2003) 5 Principles - S. O. L. I. D. Object Oriented design About Software Maintainability](https://reader035.vdocuments.site/reader035/viewer/2022071016/5fcee100282d8614b33e294c/html5/thumbnails/49.jpg)
Gains
- Protect valuable code from unnecessary change
![Page 50: SOLIDify your code - Oodrive · 2019. 5. 29. · SOLID Robert C. Martin - Agile Software Development (2003) 5 Principles - S. O. L. I. D. Object Oriented design About Software Maintainability](https://reader035.vdocuments.site/reader035/viewer/2022071016/5fcee100282d8614b33e294c/html5/thumbnails/50.jpg)
Gains
- Protect valuable code from unnecessary change
- Increased readability of valuable code
![Page 51: SOLIDify your code - Oodrive · 2019. 5. 29. · SOLID Robert C. Martin - Agile Software Development (2003) 5 Principles - S. O. L. I. D. Object Oriented design About Software Maintainability](https://reader035.vdocuments.site/reader035/viewer/2022071016/5fcee100282d8614b33e294c/html5/thumbnails/51.jpg)
Gains
- Protect valuable code from unnecessary change
- Increased readability of valuable code
Your domain , your rules
![Page 52: SOLIDify your code - Oodrive · 2019. 5. 29. · SOLID Robert C. Martin - Agile Software Development (2003) 5 Principles - S. O. L. I. D. Object Oriented design About Software Maintainability](https://reader035.vdocuments.site/reader035/viewer/2022071016/5fcee100282d8614b33e294c/html5/thumbnails/52.jpg)
Evaluating our modules
Code inspection
![Page 53: SOLIDify your code - Oodrive · 2019. 5. 29. · SOLID Robert C. Martin - Agile Software Development (2003) 5 Principles - S. O. L. I. D. Object Oriented design About Software Maintainability](https://reader035.vdocuments.site/reader035/viewer/2022071016/5fcee100282d8614b33e294c/html5/thumbnails/53.jpg)
Code inspectionEvaluating our modules Explain their responsibilities
![Page 54: SOLIDify your code - Oodrive · 2019. 5. 29. · SOLID Robert C. Martin - Agile Software Development (2003) 5 Principles - S. O. L. I. D. Object Oriented design About Software Maintainability](https://reader035.vdocuments.site/reader035/viewer/2022071016/5fcee100282d8614b33e294c/html5/thumbnails/54.jpg)
Code inspectionEvaluating our modules Explain their responsibilities
![Page 55: SOLIDify your code - Oodrive · 2019. 5. 29. · SOLID Robert C. Martin - Agile Software Development (2003) 5 Principles - S. O. L. I. D. Object Oriented design About Software Maintainability](https://reader035.vdocuments.site/reader035/viewer/2022071016/5fcee100282d8614b33e294c/html5/thumbnails/55.jpg)
Code inspectionEvaluating our modules Explain their responsibilities
Business knows details about
- Persistence- Messaging
![Page 56: SOLIDify your code - Oodrive · 2019. 5. 29. · SOLID Robert C. Martin - Agile Software Development (2003) 5 Principles - S. O. L. I. D. Object Oriented design About Software Maintainability](https://reader035.vdocuments.site/reader035/viewer/2022071016/5fcee100282d8614b33e294c/html5/thumbnails/56.jpg)
Invert all the things
![Page 57: SOLIDify your code - Oodrive · 2019. 5. 29. · SOLID Robert C. Martin - Agile Software Development (2003) 5 Principles - S. O. L. I. D. Object Oriented design About Software Maintainability](https://reader035.vdocuments.site/reader035/viewer/2022071016/5fcee100282d8614b33e294c/html5/thumbnails/57.jpg)
But Agile wins
- Don’t code for tomorrow
- Don’t plan for reuse
- Refactor towards perfection
![Page 58: SOLIDify your code - Oodrive · 2019. 5. 29. · SOLID Robert C. Martin - Agile Software Development (2003) 5 Principles - S. O. L. I. D. Object Oriented design About Software Maintainability](https://reader035.vdocuments.site/reader035/viewer/2022071016/5fcee100282d8614b33e294c/html5/thumbnails/58.jpg)
But Agile wins
- Don’t code for tomorrow
- Don’t plan for reuse
- Refactor towards perfection
So where do we start ?
![Page 59: SOLIDify your code - Oodrive · 2019. 5. 29. · SOLID Robert C. Martin - Agile Software Development (2003) 5 Principles - S. O. L. I. D. Object Oriented design About Software Maintainability](https://reader035.vdocuments.site/reader035/viewer/2022071016/5fcee100282d8614b33e294c/html5/thumbnails/59.jpg)
Start on new code ?
+ Manageable refactors
![Page 60: SOLIDify your code - Oodrive · 2019. 5. 29. · SOLID Robert C. Martin - Agile Software Development (2003) 5 Principles - S. O. L. I. D. Object Oriented design About Software Maintainability](https://reader035.vdocuments.site/reader035/viewer/2022071016/5fcee100282d8614b33e294c/html5/thumbnails/60.jpg)
Start on new code ?
+ Manageable refactors (as in no refactor)
![Page 61: SOLIDify your code - Oodrive · 2019. 5. 29. · SOLID Robert C. Martin - Agile Software Development (2003) 5 Principles - S. O. L. I. D. Object Oriented design About Software Maintainability](https://reader035.vdocuments.site/reader035/viewer/2022071016/5fcee100282d8614b33e294c/html5/thumbnails/61.jpg)
Start on new code ?
+ Manageable refactors (as in no refactor)
- Possibly useless
![Page 62: SOLIDify your code - Oodrive · 2019. 5. 29. · SOLID Robert C. Martin - Agile Software Development (2003) 5 Principles - S. O. L. I. D. Object Oriented design About Software Maintainability](https://reader035.vdocuments.site/reader035/viewer/2022071016/5fcee100282d8614b33e294c/html5/thumbnails/62.jpg)
Start on new code ?
+ Manageable refactors (as in no refactor)
- Possibly useless
- Probably useless
![Page 63: SOLIDify your code - Oodrive · 2019. 5. 29. · SOLID Robert C. Martin - Agile Software Development (2003) 5 Principles - S. O. L. I. D. Object Oriented design About Software Maintainability](https://reader035.vdocuments.site/reader035/viewer/2022071016/5fcee100282d8614b33e294c/html5/thumbnails/63.jpg)
Start on required changes
+ Probably valuable
![Page 64: SOLIDify your code - Oodrive · 2019. 5. 29. · SOLID Robert C. Martin - Agile Software Development (2003) 5 Principles - S. O. L. I. D. Object Oriented design About Software Maintainability](https://reader035.vdocuments.site/reader035/viewer/2022071016/5fcee100282d8614b33e294c/html5/thumbnails/64.jpg)
Start on required changes
+ Probably valuable ( at least it changed once )
![Page 65: SOLIDify your code - Oodrive · 2019. 5. 29. · SOLID Robert C. Martin - Agile Software Development (2003) 5 Principles - S. O. L. I. D. Object Oriented design About Software Maintainability](https://reader035.vdocuments.site/reader035/viewer/2022071016/5fcee100282d8614b33e294c/html5/thumbnails/65.jpg)
Start on required changes
+ Probably valuable ( at least it changed once )
- Keep refactors manageable
![Page 66: SOLIDify your code - Oodrive · 2019. 5. 29. · SOLID Robert C. Martin - Agile Software Development (2003) 5 Principles - S. O. L. I. D. Object Oriented design About Software Maintainability](https://reader035.vdocuments.site/reader035/viewer/2022071016/5fcee100282d8614b33e294c/html5/thumbnails/66.jpg)
Start on required changes
+ Probably valuable ( at least it changed once )
- Keep refactors manageable
↳ 1 use case at a time
![Page 67: SOLIDify your code - Oodrive · 2019. 5. 29. · SOLID Robert C. Martin - Agile Software Development (2003) 5 Principles - S. O. L. I. D. Object Oriented design About Software Maintainability](https://reader035.vdocuments.site/reader035/viewer/2022071016/5fcee100282d8614b33e294c/html5/thumbnails/67.jpg)
Day to day
- Code Review : Look for details
- Pitch abstractions to outsiders
![Page 68: SOLIDify your code - Oodrive · 2019. 5. 29. · SOLID Robert C. Martin - Agile Software Development (2003) 5 Principles - S. O. L. I. D. Object Oriented design About Software Maintainability](https://reader035.vdocuments.site/reader035/viewer/2022071016/5fcee100282d8614b33e294c/html5/thumbnails/68.jpg)
Thank you