Software Development Principles — it is a number of specific rules and recommendations.
Design principles do not provide implementation and not bound to any programming language. They are generic.
- Keep it Simple(,) Stupid / Keep it Short & Simple - KISS
- Don't repeat yourself - DRY
- SOLID
- Single responsibility principle - SRP - class should do only one task
- Open/closed principle - OCP — class should be extended not modified
- Liskov substitution principle - LSP - derived classes must be substitutable for their base classes
- Interface segregation principle - ISP - interfaces should be fine-grained
- Dependency-inversion principle - DIP - depend on abstractions, not on concretions
- Command Query Responsibility Segregation CQRS
- You Aren’t Gonna Need It - YAGNI
- Avoid Premature Optimization
- Separation of Concerns
- Encapsulate What Changes
- Favor Composition over Inheritance
- Separate Data fron Logic
- Extract when it Grows
- Inversion of Control (IoC)
References:
- https://hackernoon.com/10-oop-design-principles-every-programmer-should-know-f187436caf65
- https://dev.to/luminousmen/what-are-the-best-software-engineering-principles--3p8n
- https://itnext.io/solid-principles-explanation-and-examples-715b975dcad4
- Bob Martin SOLID Principles of Object Oriented and Agile Design (Youtube unlisted)
- The S.O.L.I.D. Principles of OO and Agile Design - by Uncle Bob Martin
- Victor Rentea - Evolving a Clean, Pragmatic Architecture – A Software Crafter’s Guide
- Why Every Element of SOLID is Wrong & blogpost
- https://symfonycasts.com/screencast/solid
- http://anastasionico.uk/blog/solid-principles-in-objected-oriented-programming-with-examples-php
- https://azeynalli1990.medium.com/software-architecture-cheat-sheet-for-daily-usage-9923922ea75b
- https://discourse.world/h/2018/08/06/Clean-pragmatic-architecture.Brainstorm & https://www.youtube.com/watch?v=mBxpOvlbAow