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

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

Embed Size (px)

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 (Принцип инверсий зависимостей)

Citation preview

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

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

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

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

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

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

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

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

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

S.O.L.I.D

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

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

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

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

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

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

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

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

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

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

-refactoring

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

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

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

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

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

-refactoring

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

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

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

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

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

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

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

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

-refactoring

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

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

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

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

абстракций»

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

-refactoring

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

Спасибо за внимание!Email: [email protected]

Skype: axi.by