S.O.L.I.D. - Павел Кохан, Python Meetup 26.09.2014

Post on 24-May-2015

1.069 views 4 download

description

Ежедневно разработчикам приходится писать десятки классов для разного рода функционала. Этот функционал может быть связан между собой или иметь разные функции. Нередко, сопровождая чужой код, программист, который более или менее понимает как должен реализовываться класс, видит картину, где, к примеру, класс «Товар» изменяет баланс клиента. По сути это в корне неверно! Доклад будет рассматривать такую проблему как правильного написания классов. Данные 5 принципов можно применять к любому объектно-ориентированному языку, но в рамках Python meetup примеры будут продемонстрированы на python. Данный доклад рассматривает 5 основных принципов, где каждая буква в аббревиатуре обозначает свой принцип. S – Single responsibility principle (Принцип единой обязанности): O – Open/Closed principle (Принцип Открытости/Закрытости) L – Liskov substitution principle (Принцип постановки Барбары Лисков) I – Interface segregation principle (Принцип разделения интерфейса) D – Dependency inversion principle (Принцип инверсий зависимостей)

Transcript of S.O.L.I.D. - Павел Кохан, Python Meetup 26.09.2014

Принципы S.O.L.I.D

Зачем они нужны?

• Чистый код• Возможность многократного

использования кода• Позволяет построить

понятную, объектно-ориентированную систему

S.O.L.I.D

• S (Single responsibility / Принцип единственной ответственности)

• O (Open-closed / Принцип открытости - закрытости)

• L (Liskov substitution / Принцип подстановки Барбары Лисков)

• I (Interface segregation / Принцип разделения интерфейса)

• D (Dependency Invertion / Принцип инверсии зависимостей)

S (Single responsibility / Принцип единственной ответственности)

«На каждый объект должна быть возложена одна единственная

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

-refactoring

O (Open-closed / Принцип открытости - закрытости)

«программные сущности должны быть открыты для расширения, но закрыты для

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

-refactoring

L (Liskov substitution / Принцип подстановки Барбары Лисков)

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

свойств программы».

I (Interface segregation / Принцип разделения интерфейса)

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

-refactoring

D (Dependency Invertion / Принцип инверсии зависимостей)

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

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

абстракций»

-refactoring

Спасибо за внимание!Email: pavel.kokhan@tut.by

Skype: axi.by