An open API service indexing awesome lists of open source software.

https://github.com/mahmoud-anani/explanation-of-solid-principles-on-youtube

SOLID principles are a set of design principles that help developers create software that is more maintainable, understandable, and scalable. Introduced by Robert C. Martin, these principles form a foundation for object-oriented programming (OOP) design. Adhering to SOLID principles can lead to better software architecture and easier code..
https://github.com/mahmoud-anani/explanation-of-solid-principles-on-youtube

js solid-principles

Last synced: 8 months ago
JSON representation

SOLID principles are a set of design principles that help developers create software that is more maintainable, understandable, and scalable. Introduced by Robert C. Martin, these principles form a foundation for object-oriented programming (OOP) design. Adhering to SOLID principles can lead to better software architecture and easier code..

Awesome Lists containing this project

README

          

# SOLID Principles

## Introduction

SOLID principles are a set of design principles that help developers create software that is more maintainable, understandable, and scalable. Introduced by Robert C. Martin, these principles form a foundation for object-oriented programming (OOP) design. Adhering to SOLID principles can lead to better software architecture and easier code management.

![SOLID Principles](./Intro/cover-intro.jpg)

### The Five SOLID Principles:

1. **Single Responsibility Principle (SRP)**:
A class should have only one reason to change, meaning it should have only one responsibility. This principle helps to keep classes focused and manageable.

![Single Responsibility Principle](./1-SRP/images.png)

2. **Open/Closed Principle (OCP)**:
Software entities (classes, modules, functions, etc.) should be open for extension but closed for modification. This principle allows you to add new functionality without altering existing code.

![Open/Closed Principle](./2-OCP/1678595844698.png)

3. **Liskov Substitution Principle (LSP)**:
Objects of a superclass should be replaceable with objects of a subclass without affecting the correctness of the program. This principle ensures that a subclass can stand in for its superclass.

![Liskov Substitution Principle](./3-LCP/1678728130258.png)

4. **Interface Segregation Principle (ISP)**:
No client should be forced to depend on methods it does not use. This principle advocates for small, specific interfaces instead of large, general-purpose ones.

![Interface Segregation Principle](./4-ISP/1678861290551.png)

5. **Dependency Inversion Principle (DIP)**:
High-level modules should not depend on low-level modules; both should depend on abstractions. This principle promotes the decoupling of software modules.

![Dependency Inversion Principle](./5-DIP/1679118298845.png)

## YouTube Course

You can watch the complete course explaining these principles in detail on YouTube through the following link:

[SOLID Principles Course on YouTube](https://www.youtube.com/playlist?list=PLOldSEMXUdZvAyid_1BWHnExKObbKeajJ)

## How to Use

You can use this repository as a reference to understand SOLID principles and apply them in your software projects. If you have any questions or need further clarifications, feel free to open issues in this repository.

## Contribution

If you would like to contribute to improving the content or adding new information, please feel free to create a Pull Request.

## License

This project is licensed under the [MIT License](LICENSE).