SOLID — это 5 принципов, которые помогают писать чистый, гибкий, поддерживаемый и масштабируемый код. То есть его можно будет адаптировать к новым требованиям и задачам бизнеса без необходимости полностью переписывать.
Вопрос про SOLID часто задают на собеседованиях. Это тот случай, когда то, что спрашивают на собеседовании, реально пригодится в работе. Так что разбуди тебя посреди ночи, а принципы SOLID должен рассказать.
Single Responsibility
Принцип единственной ответственности — каждый объект должен иметь одну ответственность и эта ответственность должна быть полностью инкапсулирована в класс.
Чем больше у класса обязанностей, тем выше риски ошибок. Внесение изменений в одну обязанность может повлиять на другие.
Оpen/Closed
Принцип открытости/закрытости — класс должен быть открытым для расширения, но закрытым для модификации.
Чтобы класс выполнял больше функций, стоит добавлять новую функцию к существующим, а не изменять текущие.
Liskov Substitution
Принцип подстановки Барбары Лисков — объекты в программе должны быть заменяемыми на экземпляры их подтипов без изменения правильности работы программы. Дочерний класс должен уметь выполнять то, что делает его родитель.
Interface Segregation
Принцип разделения интерфейсов — слишком «толстые» интерфейсы необходимо разделять на более маленькие и специфические. Благодаря этому, программные сущности маленьких интерфейсов будут знать только о методах, которые необходимы им в работе.
Это необходимо, чтобы избежать зависимости от всего, что не используется.
Dependency Inversion
Принцип инверсии зависимостей — модули высокого уровня не должны зависеть от модулей низкого уровня. Класс нужно объединять не с инструментом, который он использует, а с интерфейсом, который позволит инструменту подключаться к классу.