Небольшая подборка отсмотренного видео на тему принципов S.O.L.I.D. Принципы очень важны, так как более или менее сложная система для обеспечения большей гибкости уже требует их соблюдения.
Небольшой конспект по этим принципам:
S (RP) - Single Responsibility Principle - Принцип Единственной ответственности
Представим ресторан. У него есть Посетитель, который хочет сделать заказ, и есть Повар, который может выполнить этот заказ. В данном случае, когда сущности всего две, то повару, как единственному обслуживающему персоналу, придётся также тратить время на то, чтобы забрать этот заказ, обработать и уже потом начать готовить. Следуя принципу SRP, нужно ввести новую сущность - Официант, который бы и занимался всей логистикой заказов, освобождая тем самым повара от лишних обязанностей, которые его касаться не должны.
O (CP) - Open/Closed Principle - Принцип Открытости/Закрытости
Любая готовая сущность должна быть закрыта для модификаций внутренней реализации, и открыта для расширений. Отличный пример - тело человека. Оно открыто для расширения - можно одевать одежду, гаджеты и пр., но если захотим изменить функции текущего органа или добавить какой-то новый орган, то это скорее всего работать не будет (к тому же, у нас нет доступа к исходникам и ПО (IDE), на которой всё это было написано :)) ).
L (SP) - Liskov Substitution Principle - Принцип Подстановки Барбары Лисков
Наследованная сущность должна иметь возможность реализовывать методы родительской сущности. То есть, если мы наследуем резиновую утку от настоящей утки (что конечно странно), которая имеет возможность крякать, летать и плавать, то резиновая утка также должна иметь возможность крякать, летать и плавать, принимая при этом те же самые аргументы.
I (SP) - Interface Segregation Principle - Принцип разделения интерфейса
Крупный интерфейс должен быть разбит на более мелкие интерфейсы, иначе получится, что какой-то класс будет наследовать ненужные методы интерфейса и придётся писать для них заглушки (в JS нет интерфейсов, но есть некоего рода контракты, которые можно рассматривать в данном контексте).
D (IP) - Dependency Inversion Principle - Принцип инверсии зависимостей
Является одним из способов реализации decoupling - избавления от сильной связности кода. Согласно этому принципу, высокоуровневая сущность не должна зависеть от низкоуровневой. В таком случае, обе сущности должны зависеть от соответствующей абстракции. А абстракции не должны зависеть от деталей реализации - детали реализации должны зависеть от абстракций.
Плейлист по SOLID с примерами на PHP
Отличный доклад
И ещё один неплохой вебинар на эту тему.
Мы поможем вам ее достичь!
310 000
единомышленников
инструменты
для увлекательного достижения