Article

SOLID Principles


Single-Responsibility Principle (SCP)

A class should have one, and only one, reason to change. An object should have only one responsibility (a reason to change). It is supposed to simplify modifications. The cohesion is stronger, dependency coupling is looser and the code is less complex.

Open-Closed Principle (OCP)

Entities should be open for extension, but closed for modification. Entity can be extended by adding what is needed, but it can never be modified. This significantly reduces the risk of breaking existing functionality and provides a looser coupling.

Liskov Substitution Principle (LSP)

Subtypes must be substitutable for their base types. The principle says that it is possible to use base type and get a correct result as the outcome. It can be said that the LSP confirmes abstractions are correct.

Interface Segregation Principle (ISP)

Classes that implement interfaces, should not be forced to implement methods they do not use. Big interfaces should be splitted into smaller ones so there are no methods that are not used implemented. Classes know only about methods related to them providing decoupling and easier modifications.

Dependency Inversion Principle (DIP)

High-level modules should not depend on low-level modules. Both should depend on abstractions. Abstractions should not depend on details. Details should depend on abstractions. This reduces dependencies in the code modules. Code is much more easier to maintain if abstractions and details are isolated from each other.

Similar posters

CEDAR Feedback
CEDAR Feedback CEDAR is a structured feedback model providing coaching opportunities via repeated revisiting and readjusting of the feedback and the goals.
STATIK Kanban
STATIK Kanban The Systems Thinking Approach To Introducing Kanban (STATIK) is a repeatable way to start with Kanban resulting in continuous improvement.
Data Model Canvas
Data Model Canvas The Data Product Canvas is a framework for developing data products based organized into 10 blocks within 3 domain areas.
Kanban Practices
Kanban Practices Visualize Visualizing your work provides transparency, identifying the bottlenecks. Create cards for the items you work on. Think of the workflow – statuses that work items go through to make implicit policies explicit, which enable learning how the work works. Limit Work In Process Stop starting, start finishing. Limit the number of items being worked...
Theory Of Constraints
Theory Of Constraints The Theory of constraints says the throughput of any system is limited by at least one constraint slowing it down.
Classes of Service (CoS)
Classes of Service (CoS) Classes of service (CoS) provide a transparent way of categorizing the incoming work items and ensuring they are properly prioritized and governed to lead to meeting customer expectations. They enable managing risk, priorities, and cost of delay. Expedite High-priority items that should be worked on as soon as possible. Expedite class work items have critical...
Seven wastes of software development
Seven wastes of software development Similar to what TPS identified as seven categories of waste in manufacturing, also software development has its own wastes.
Core Kanban Practices
Core Kanban Practices One of the few rules or practices which are the foundation of Kanban are its 3 core practices: Visualize, Limit WIP, and Manage flow.
The prime directive of agile software development
The prime directive of agile software development Acronymat poster: The prime directive of agile software development - Never be blocked, the system must work all the time.
AIDAOR
AIDAOR The AIDAOR is a hierarchical model, where a persona moves through a series of cognitive steps before and after making a purchase decision.