Solid - принципы с примерами PHP презентация

Содержание

Что такое SOLID принцины? Single responsibility Open-closed Liskov substitution Interface segregation Dependency inversion

Слайд 1SOLID-принципы с примерами на PHP
Андрей Нестер, Минск
Senior Software Engineer @

SugarCRM, Intetics

Слайд 2Что такое SOLID принцины?
Single responsibility
Open-closed
Liskov substitution
Interface segregation
Dependency inversion


Слайд 3Single Responsibility Принцип единой ответственности
"На каждый объект должна быть возложена одна единственная

обязанность"

Конкретный класс должен решать конкретную задачу — ни больше, ни меньше.



Слайд 4Single Responsibility Плохой код




Слайд 5Single Responsibility Почему плохой код?



Такой код сложнее в сопровождении.
Каждая ответственность — причина

для изменений, а изменения потенциально опасны.
Каскадные изменения тесносвязанных ответственностей.

Слайд 6Single Responsibility Хороший код





Слайд 7Single Responsibility Реальный пример




PHPMailer — класс содержит 3925 строк кода и порядка

80 публичных методов


CodeIgniter

Слайд 8Open-Closed Принцип открытости/закрытости
"Программные сущности должны быть открыты для расширения, но закрыты для

модификации"

Все классы, функции и т.д. должны проектироваться так, чтобы для изменения или расширения их поведения, нам не нужно было изменять их исходный код.



Слайд 9Open-Closed Плохой код


Слайд 10Open-Closed Почему плохой код?

Плохо расширяемый код
Его сложно повторно использовать.
Необходимо менять OrderCalculator для

новых Order


Слайд 11Open-Closed Хороший код


Слайд 12Open-Closed Хороший код


Слайд 13
Symfony Framework
Open-Closed Реальный пример


Слайд 14

Open-Closed Реальный пример - Улучшенный


Слайд 15Liskov Substitution Принцип подстановки Лисков

«Функции, которые используют базовый тип, должны иметь возможность

использовать подтипы базового типа, не зная об этом.»

При использовании наследника класса результат выполнения кода должен быть предсказуем и не изменять свойств метода.

Слайд 16Liskov Substitution Плохой код (пока ещё хороший)


Слайд 17Liskov Substitution Плохой код


Слайд 18Liskov Substitution Почему плохой код?

При использовании FreeOrder “ломается” OrderCollector.
FreeOrder не является настоящим

подклассом SimpleOrder.
Подкласс должен определяться на основе поведения.


Слайд 19Liskov Substitution Хороший код


Слайд 20Liskov Substitution Плохой код


Слайд 21Liskov Substitution Хороший код


Слайд 22Liskov Substitution Реальный пример

Symfony 2 Framework


Слайд 23Interface Segregation Принцип разделения интерфейса

«Много специализированных интерфейсов лучше, чем один универсальный»

Соблюдение

этого принципа необходимо для того, чтобы классы-клиенты использующий/реализующий интерфейс знали только о тех методах, которые они используют, что ведёт к уменьшению количества неиспользуемого кода.

Слайд 24Interface Segregation Плохой код


Слайд 25Interface Segregation Почему плохой код?

Интерфейс слишком большой, что затрудняет создание классов, реализующих

его.
Большие интерфейсы не так удобно повторно использовать.
Интерфейс содержит слишком много ответственностей (вероятно нарушение SRP)
Наверняка, наследуемые классы будут создавать методы-”пустышки” для данного интерфейса (вероятно нарушение LSP)

Слайд 26Interface Segregation Хороший код


Слайд 27Interface Segregation Реальный пример

Laravel 5 Framework


Слайд 28Dependency Inversion Принцип инверсии зависимостей

«Зависимости внутри системы строятся на основе абстракций. Модули

верхнего уровня не зависят от модулей нижнего уровня. Абстракции не должны зависеть от деталей. Детали должны зависеть от абстракций»

Зависимости должны строится относительно абстракций, а не деталей.

Слайд 29Dependency Inversion Плохой код


Слайд 30Dependency Inversion Почему плохой код?

Зависимости от деталей приводит к снижению гибкости.
Такой код

тяжелее тестировать.


Слайд 31Dependency Inversion Хороший код


Слайд 32Dependency Inversion Реальный пример

Laravel 5 Framework


Слайд 33Заключение

SOLID — не панацея

”Любую проблему можно решить с помощью дополнительных абстракций,

кроме проблемы избыточных абстракций”

Главное — управление сложностью кода

Слайд 34Вопросы?


Обратная связь

Если не удалось найти и скачать презентацию, Вы можете заказать его на нашем сайте. Мы постараемся найти нужный Вам материал и отправим по электронной почте. Не стесняйтесь обращаться к нам, если у вас возникли вопросы или пожелания:

Email: Нажмите что бы посмотреть 

Что такое ThePresentation.ru?

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


Для правообладателей

Яндекс.Метрика