-
Encapsulate What Varies (EWV)- Design Principle
Learn how to design software to accommodate future changes with minimal effort. Encapsulate what varies, shield it from affecting the program and reduce risks of introducing bugs.
-
Decoding Coupling and Cohesion
Coupling and Cohesion are important concepts describing the quality of a software design. An application should have Low Coupling & High Cohesion
-
Inversion of Control
Dependency Injection (DI) and Inversion of Control (IoC) are related concepts in software engineering, but they are not exactly the same.
-
A solid guide to SOLID Principles
The SOLID principles provide a clear and concise set of guidelines for designing software that is easy to maintain, extend, and scale. Furthermore, The SOLID principles are technology-agnostic, meaning that they can be applied to any programming language or platform.
-
CQRS – keep read & write responsibility separate
CQRS (Command-Query Responsibility Segregation) is a design pattern that separates the responsibility of handling commands (write operations) from queries (read operations) in a system. This pattern can improve the scalability, performance, and maintainability of the system by optimising each side independently.
-
Why should we prefer Composition over Inheritance?
Inheritance can lead to tight coupling between classes, violation of single responsibility, code duplication.
-
DRY (Don’t Repeat Yourself) Programming Principle
The DRY principle (Don’t Repeat Yourself) is a programming principle that suggests that code should not be duplicated unnecessarily, and that repetition should be eliminated through abstraction and modularisation.
-
YAGNI Programming Principle
The YAGNI principle (You Aren’t Gonna Need It) is a programming principle that suggests not to implement features until they are actually needed.
-
KISS Programming Principle
The KISS principle (Keep It Simple, Stupid) is a design principle that suggests that simplicity should be a key goal and complexity should be avoided.