SOLID is an object-oriented design (OOD) principles by Robert C. Martin (Uncle Bob), have 5 principles :
- Single Responsibility Principle
- Open / Closed Principle
- Liskov Substitution Principle
- Interface Segregation Principle
- Dependency Inversion Principle
To make project easier to maintain and extend as project grows, with avoiding bad code that have some indicators :
- Rigidity (Difficult to change, even small pieces)
- Dont aware of improvement of some feature
- Fragility (Easily crashed when code being changed)
- Dont aware of unexpected condition
- Immobility (Hard to refactor, not reusable)
- Write a whole busines rules in one function
- Viscosity (Like swim in syrup)
- Bad written, pattern, or documentation.
- Author - Muhammad Cholis Malik
- https://dave.cheney.net/2016/08/20/solid-go-design
- https://medium.com/@felipedutratine/solid-single-responsibility-principle-in-golang-dc4a6be9bb3a
- https://dev.to/jrwren/solid-principles-in-the-go-programming-language-kbc
- https://s8sg.medium.com/solid-principle-in-go-e1a624290346
- https://github.com/iamharvey/SOLID_principles
- https://github.com/ammorteza/SOLID-principles-in-Golang
- https://codingsight.com/indicators-of-problem-design/
- https://www.digitalocean.com/community/conceptual_articles/s-o-l-i-d-the-first-five-principles-of-object-oriented-design
- https://softwareengineering.stackexchange.com/questions/357127/clear-examples-for-code-smells
- https://fi.ort.edu.uy/innovaportal/file/2032/1/design_principles.pdf