SOLID. Зачем он нужен?

Все поголовно говорят, мол SOLID это очень важно, нужно знать обязательно, необходимо использовать и тд. А по сути то, зачем нужен этот SOLID? Что в нём такого особенного, что его нужно использовать? Что это вообще такое, SOLID?

Методом тыка, практики, проб и ошибок программисты с течением времени пришли к некоторым правилам, которые на практике успешно применяются и всегда приводят к хорошему результату. Они вынесли эти правила в одну "сборку", которую назвали SOLID. Фактически это было сделано для удобств и для того, что б начинающие программисты не проходили весь путь развития самостоятельно, а имели некоторые "шпаргалки", и учились на ошибках предыдущих поколений.

Знание принципов SOLID показывает насколько глубоко программист разбирается в сфере своей деятельности, на сколько он мыслит логично, алгоритмически правильно и лаконично, по этому на собеседованиях нередко просят описать основные моменты данных принципов.

SOLID - Single responsibility, Open/close, Liskov substitution, Interface segregation и Dependency inversion.

Коротко обо всём:

1. Single responsibility. Каждый объект должен иметь одну единственную обязанность и эта обязанность должна быть инкапсулирована.

2. Open-close. Все объекты должны иметь возможность менять своё поведение без изменения исходного кода.

3. Liskov substitution. Объекты в программе могут быть заменены их наследниками без изменения свойств программы.

4. Interface segregation. Разделение интерфейсов. Много небольших специализированных интерфейсов лучше чем один большой универсальный.

5. Dependency inversion. Модули верхнего уровня зависят от модулей нижнего уровня, но не наоборот.