SOLID – это аббревиатура. Она знакома многим, как термин из области объектно-ориентированного программирования, дизайна. В основе заложено 5 базовых принципов, помогающих в организации кода. Рассмотрим, как они работают.
«S» — первый принцип → «Single responsibility principle». Как он работает? Отдельно взятый объект должен выполнять единственную, закрепленную за ним обязанность. Отсюда название — «единственной ответственности». Пример из жизни: разные типы файлов (фильмы, музыку, изображения) размещены по отдельным папкам (потребуется и по подпапкам). При этом они не связаны, изменения в отдельной папке или подпапке не отразятся на содержимом в других.
«O» — второй → «Open-closed principle». Его девиз: «Открытость для расширения + закрытость для изменений». Как следствие, название — «открытости/закрытости», и четкие требования к системе. Главное, чтобы старый код не менялся из-за нового функционала.
«L» — третий → «Liskov substitution principle». Его формулировка: вместо объектов программы подставляются их наследники — экземпляры подтипов, без каких-либо изменений программных свойств. Он назван «принципом подстановки» по предложению Барбары Лисков.
«I» — четвертый → «Interface segregation principle».Универсальный интерфейс объединяет в себе несколько специализированных. А данный принцип, названный «разделение интерфейса», предполагает, что универсальный интерфейс следует не задумываясь разделять на специализированные.
«D» — пятый → «Dependency inversion principle», можно рассматривать с нескольких точек зрения:
- от абстракций зависят модули верхних и нижних уровней;
- модули верхних уровней не зависят от модулей нижних;
- общее не зависит от частного, а частное зависит от общего.
Общий смысл принципа «инверсии зависимостей» — внутрисистемные зависимости построены на абстракциях, которые не зависят от деталей (и наоборот – детали не зависят от абстракций).
Выводы
SOLID лучше всего подходит для проектов, которые разрабатываются с помощью гибких методологий. Эти пять принципов в своей сути изменение модулей сводят к их добавлению и удалению.
About The Author
Виктор