SlideShare a Scribd company logo
OOP и WordPress
Подумаем о будущем проекта
Евгений Котельницкий
WordCamp Kyiv, 2016
Евгений Котельницкий
@yeeevhen
● Хотим простоты поддержки
○ низкий порог вхождения;
○ низкая цена изменений;
○ минимум ошибок и сбоев;
● Отсутствие проблем с быстродействием
● Отсутствие уязвимостей
● Хотим повторно использовать код
Наши цели
VS
Зачем ООП?
● Как исправить ошибку?
● Где реализован этот блок?
● Зачем тут это?
● Я же не трогал этот модуль?
● Как я перенесу “часть изменений”?
● Как взять часть кода из другого
проекта?
● *** ?
●
???
Что такое ООП?
Осторожно, очевидные вещи
Инкапсуляция
«Объектно-ориентированный анализ и проектирование»
Полиморфизм
Наследование
● Более дорогие разработчики
● Повышенные затраты (на начальном этапе)
● Сложности оптимизации (запросы к БД в
циклах)
● ...
Немного негатива
Нет времени на ООП
Нет времени на ООП
www.uml.org
Язык моделирования UML
Диаграммы Классов
Отношения в диаграммах Классов
Generalization (наследование)
Implementation (имплементация)
Association (ассоциация)
Aggregation (агрегация)
Composition (композиция)
Dependency (зависимость)
programador.ru/uml-class-diagram-relation/
Классы ядра WordPress
Виджеты // Класс виджета
Виджеты // Регистрация виджета
Виджеты // Регистрация виджета №2
Виджеты // Регистрация виджета №3
Правильный плагин
Requires: 3.9 or higher
Compatible up to: 4.3.6
Last Updated: 12 months ago
Active Installs: 20,000+
Ratings
5 out of 5 stars
https://github.com/scribu/wp-posts-to-posts
https://wordpress.org/plugins/posts-to-posts/
Core Classes
Admin Classes
Ещё примеры
CRON
DB Abstractions
Объектно Ориентированная Архитектура
Пойдём немного дальше
Осторожно, нудная теория
Архитектура ПО - многоуровневая система абстракций.
Качество абстракции
● Зацепление
● Связность
● Полнота
● Достаточность
● Примитивность
Качество классов и объектов, Гради Буч
Качество архитектуры
● Квалификация команды
● Мотивация команды
● Сроки и бюджет
Что влияет на качество
● Прозрачность в целях
● Правильно настроенный процесс
Вопросы?
Спасибо!

More Related Content

What's hot

Можно ли обойтись без тестировщиков
Можно ли обойтись без тестировщиковМожно ли обойтись без тестировщиков
Можно ли обойтись без тестировщиков
Maxim Shulga
 
Что сделать, чтобы сто раз все не переделывать
Что сделать, чтобы сто раз все не переделыватьЧто сделать, чтобы сто раз все не переделывать
Что сделать, чтобы сто раз все не переделывать
Транслируем.бел
 
Slides
SlidesSlides
Slides
Dev2Dev
 
как инженерные практики помогают экономить бизнесу
как инженерные практики помогают экономить бизнесукак инженерные практики помогают экономить бизнесу
как инженерные практики помогают экономить бизнесуAndrey Rebrov
 
Повышаем и следим за качеством PHP кода
Повышаем и следим за качеством PHP кодаПовышаем и следим за качеством PHP кода
Повышаем и следим за качеством PHP кода
Aleksandr Makhomet
 
15 шагов к быстрым сделкам на тендерных площадках
15 шагов к быстрым сделкам на тендерных площадках15 шагов к быстрым сделкам на тендерных площадках
15 шагов к быстрым сделкам на тендерных площадках
Conformato
 
серёжа пономарёв @ Kuchyn.com.ua junior java developer программируем по-взро...
серёжа пономарёв @ Kuchyn.com.ua junior java developer  программируем по-взро...серёжа пономарёв @ Kuchyn.com.ua junior java developer  программируем по-взро...
серёжа пономарёв @ Kuchyn.com.ua junior java developer программируем по-взро...Sergey Ponomarev
 
автоматизация тестирования огурцом
автоматизация тестирования огурцомавтоматизация тестирования огурцом
автоматизация тестирования огурцом
Vadim Glebov
 
Тестирование как панацея для жизни и развития проекта
Тестирование как панацея для жизни и развития проекта Тестирование как панацея для жизни и развития проекта
Тестирование как панацея для жизни и развития проекта
Evgeniy Kuzmin
 
Володимир Дем’яненко, «How to become a Test Automation Engineer. My way»
Володимир Дем’яненко, «How to become a Test Automation Engineer. My way»Володимир Дем’яненко, «How to become a Test Automation Engineer. My way»
Володимир Дем’яненко, «How to become a Test Automation Engineer. My way»
Sigma Software
 
Руководство для программистов по устройству на работу в Unigine
Руководство для программистов по устройству на работу в UnigineРуководство для программистов по устройству на работу в Unigine
Руководство для программистов по устройству на работу в Unigine
Unigine Corp.
 
Хотите драйва? Вам в TDD!
Хотите драйва? Вам в TDD!Хотите драйва? Вам в TDD!
Хотите драйва? Вам в TDD!
Serhiy Kalinets
 
Одна голова - плохо
Одна голова - плохоОдна голова - плохо
архитектура крупных Word press сайтов
архитектура крупных Word press сайтовархитектура крупных Word press сайтов
архитектура крупных Word press сайтовМаксим Бровченко
 
«Розробка мобільних додатків від початку створення ТЗ до релізу»
«Розробка мобільних додатків від початку створення ТЗ до релізу»«Розробка мобільних додатків від початку створення ТЗ до релізу»
«Розробка мобільних додатків від початку створення ТЗ до релізу»
Stfalcon Meetups
 
Roman Marinsky "Ретроспектива вивчення UI автоматизації"
Roman Marinsky "Ретроспектива вивчення UI автоматизації"Roman Marinsky "Ретроспектива вивчення UI автоматизації"
Roman Marinsky "Ретроспектива вивчення UI автоматизації"
Dakiry
 
Тестируем развитие тестировщика
Тестируем развитие тестировщикаТестируем развитие тестировщика
Тестируем развитие тестировщика
SQALab
 
Platypus platform ivbit
Platypus platform ivbitPlatypus platform ivbit
Platypus platform ivbitjskonst
 
Как мы делаем Banki.ru
Как мы делаем Banki.ruКак мы делаем Banki.ru
Как мы делаем Banki.ru
Roman Ivliev
 

What's hot (19)

Можно ли обойтись без тестировщиков
Можно ли обойтись без тестировщиковМожно ли обойтись без тестировщиков
Можно ли обойтись без тестировщиков
 
Что сделать, чтобы сто раз все не переделывать
Что сделать, чтобы сто раз все не переделыватьЧто сделать, чтобы сто раз все не переделывать
Что сделать, чтобы сто раз все не переделывать
 
Slides
SlidesSlides
Slides
 
как инженерные практики помогают экономить бизнесу
как инженерные практики помогают экономить бизнесукак инженерные практики помогают экономить бизнесу
как инженерные практики помогают экономить бизнесу
 
Повышаем и следим за качеством PHP кода
Повышаем и следим за качеством PHP кодаПовышаем и следим за качеством PHP кода
Повышаем и следим за качеством PHP кода
 
15 шагов к быстрым сделкам на тендерных площадках
15 шагов к быстрым сделкам на тендерных площадках15 шагов к быстрым сделкам на тендерных площадках
15 шагов к быстрым сделкам на тендерных площадках
 
серёжа пономарёв @ Kuchyn.com.ua junior java developer программируем по-взро...
серёжа пономарёв @ Kuchyn.com.ua junior java developer  программируем по-взро...серёжа пономарёв @ Kuchyn.com.ua junior java developer  программируем по-взро...
серёжа пономарёв @ Kuchyn.com.ua junior java developer программируем по-взро...
 
автоматизация тестирования огурцом
автоматизация тестирования огурцомавтоматизация тестирования огурцом
автоматизация тестирования огурцом
 
Тестирование как панацея для жизни и развития проекта
Тестирование как панацея для жизни и развития проекта Тестирование как панацея для жизни и развития проекта
Тестирование как панацея для жизни и развития проекта
 
Володимир Дем’яненко, «How to become a Test Automation Engineer. My way»
Володимир Дем’яненко, «How to become a Test Automation Engineer. My way»Володимир Дем’яненко, «How to become a Test Automation Engineer. My way»
Володимир Дем’яненко, «How to become a Test Automation Engineer. My way»
 
Руководство для программистов по устройству на работу в Unigine
Руководство для программистов по устройству на работу в UnigineРуководство для программистов по устройству на работу в Unigine
Руководство для программистов по устройству на работу в Unigine
 
Хотите драйва? Вам в TDD!
Хотите драйва? Вам в TDD!Хотите драйва? Вам в TDD!
Хотите драйва? Вам в TDD!
 
Одна голова - плохо
Одна голова - плохоОдна голова - плохо
Одна голова - плохо
 
архитектура крупных Word press сайтов
архитектура крупных Word press сайтовархитектура крупных Word press сайтов
архитектура крупных Word press сайтов
 
«Розробка мобільних додатків від початку створення ТЗ до релізу»
«Розробка мобільних додатків від початку створення ТЗ до релізу»«Розробка мобільних додатків від початку створення ТЗ до релізу»
«Розробка мобільних додатків від початку створення ТЗ до релізу»
 
Roman Marinsky "Ретроспектива вивчення UI автоматизації"
Roman Marinsky "Ретроспектива вивчення UI автоматизації"Roman Marinsky "Ретроспектива вивчення UI автоматизації"
Roman Marinsky "Ретроспектива вивчення UI автоматизації"
 
Тестируем развитие тестировщика
Тестируем развитие тестировщикаТестируем развитие тестировщика
Тестируем развитие тестировщика
 
Platypus platform ivbit
Platypus platform ivbitPlatypus platform ivbit
Platypus platform ivbit
 
Как мы делаем Banki.ru
Как мы делаем Banki.ruКак мы делаем Banki.ru
Как мы делаем Banki.ru
 

Viewers also liked

САМБО для WordPress
САМБО для WordPressСАМБО для WordPress
САМБО для WordPress
Oleksandr Strikha
 
P.S. I love you
P.S. I love youP.S. I love you
P.S. I love you
Oleksandr Strikha
 
Moving the design process to the browser
Moving the design process to the browserMoving the design process to the browser
Moving the design process to the browser
Oleksandr Strikha
 
Як я запускаю проекти без програмування на WordPress і скільки це коштує
Як я запускаю проекти без програмування на WordPress і скільки це коштуєЯк я запускаю проекти без програмування на WordPress і скільки це коштує
Як я запускаю проекти без програмування на WordPress і скільки це коштує
Oleksandr Strikha
 
Вывод своих плагинов на глобальный рынок: их продвижение, контент-маркетинг, ...
Вывод своих плагинов на глобальный рынок: их продвижение, контент-маркетинг, ...Вывод своих плагинов на глобальный рынок: их продвижение, контент-маркетинг, ...
Вывод своих плагинов на глобальный рынок: их продвижение, контент-маркетинг, ...
Oleksandr Strikha
 
WordPress is at the core of the advertising revolution — but it’s not perfect
WordPress is at the core of the advertising revolution — but it’s not perfectWordPress is at the core of the advertising revolution — but it’s not perfect
WordPress is at the core of the advertising revolution — but it’s not perfect
Oleksandr Strikha
 
Зачем вам нужен BuddyPress?
Зачем вам нужен BuddyPress?Зачем вам нужен BuddyPress?
Зачем вам нужен BuddyPress?
Oleksandr Strikha
 

Viewers also liked (7)

САМБО для WordPress
САМБО для WordPressСАМБО для WordPress
САМБО для WordPress
 
P.S. I love you
P.S. I love youP.S. I love you
P.S. I love you
 
Moving the design process to the browser
Moving the design process to the browserMoving the design process to the browser
Moving the design process to the browser
 
Як я запускаю проекти без програмування на WordPress і скільки це коштує
Як я запускаю проекти без програмування на WordPress і скільки це коштуєЯк я запускаю проекти без програмування на WordPress і скільки це коштує
Як я запускаю проекти без програмування на WordPress і скільки це коштує
 
Вывод своих плагинов на глобальный рынок: их продвижение, контент-маркетинг, ...
Вывод своих плагинов на глобальный рынок: их продвижение, контент-маркетинг, ...Вывод своих плагинов на глобальный рынок: их продвижение, контент-маркетинг, ...
Вывод своих плагинов на глобальный рынок: их продвижение, контент-маркетинг, ...
 
WordPress is at the core of the advertising revolution — but it’s not perfect
WordPress is at the core of the advertising revolution — but it’s not perfectWordPress is at the core of the advertising revolution — but it’s not perfect
WordPress is at the core of the advertising revolution — but it’s not perfect
 
Зачем вам нужен BuddyPress?
Зачем вам нужен BuddyPress?Зачем вам нужен BuddyPress?
Зачем вам нужен BuddyPress?
 

Similar to OOP и WordPress. Подумаем о будущем проекта.

Как не сойти с ума при разработке крупных проектов на WordPress
Как не сойти с ума при разработке крупных проектов на WordPressКак не сойти с ума при разработке крупных проектов на WordPress
Как не сойти с ума при разработке крупных проектов на WordPress
Yevhen Kotelnytskyi
 
Архитектура крупных WordPress сайтов
Архитектура крупных WordPress сайтовАрхитектура крупных WordPress сайтов
Архитектура крупных WordPress сайтов
Yevhen Kotelnytskyi
 
Рефакторинг и второе рождение проекта на примере Zend Framework 2.0
Рефакторинг и второе рождение проекта на примере Zend Framework 2.0Рефакторинг и второе рождение проекта на примере Zend Framework 2.0
Рефакторинг и второе рождение проекта на примере Zend Framework 2.0
AlexeyParhomenko
 
Максим Гуртовенко - The future is wild | HappyDev'12
Максим Гуртовенко - The future is wild | HappyDev'12Максим Гуртовенко - The future is wild | HappyDev'12
Максим Гуртовенко - The future is wild | HappyDev'12HappyDev
 
Как жить в согласии с SOLID?
Как жить в согласии с SOLID?Как жить в согласии с SOLID?
Как жить в согласии с SOLID?
etyumentcev
 
"Этот код плохой, его нужно переписать". Слышали? Как обосновать
"Этот код плохой, его нужно переписать". Слышали? Как обосновать"Этот код плохой, его нужно переписать". Слышали? Как обосновать
"Этот код плохой, его нужно переписать". Слышали? Как обосновать
Maksym Bezuglyi
 
Олег Бунин (Онтико) | Менеджмент и бизнес-процессы в разработке highload-прое...
Олег Бунин (Онтико) | Менеджмент и бизнес-процессы в разработке highload-прое...Олег Бунин (Онтико) | Менеджмент и бизнес-процессы в разработке highload-прое...
Олег Бунин (Онтико) | Менеджмент и бизнес-процессы в разработке highload-прое...
RIF-Technology
 
Автоматизация design patterns и компактный код вместе с PostSharp
Автоматизация design patterns и компактный код вместе с PostSharpАвтоматизация design patterns и компактный код вместе с PostSharp
Автоматизация design patterns и компактный код вместе с PostSharp
GoSharp
 
Meet Magento Belarus - Andriy Samilyak
Meet Magento Belarus - Andriy SamilyakMeet Magento Belarus - Andriy Samilyak
Meet Magento Belarus - Andriy Samilyak
Amasty
 
История проекта, который никогда не падает / Андрей Шетухин
История проекта, который никогда не падает / Андрей ШетухинИстория проекта, который никогда не падает / Андрей Шетухин
История проекта, который никогда не падает / Андрей ШетухинOntico
 
Автоматизация design patterns и компактный код вместе с PostSharp
Автоматизация design patterns и компактный код вместе с PostSharpАвтоматизация design patterns и компактный код вместе с PostSharp
Автоматизация design patterns и компактный код вместе с PostSharp
geekfamilyrussia
 
Benefits of unit-testing and inversion of controll
Benefits of unit-testing and inversion of controllBenefits of unit-testing and inversion of controll
Benefits of unit-testing and inversion of controllMykyta Hopkalo
 
«Особенности Agile-разработки интернет-проектов»
«Особенности Agile-разработки интернет-проектов»«Особенности Agile-разработки интернет-проектов»
«Особенности Agile-разработки интернет-проектов»
DataArt
 
QA Fest 2016. Алексей Виноградов. Цель тестирования. А на самом деле?
QA Fest 2016. Алексей Виноградов. Цель тестирования. А на самом деле?QA Fest 2016. Алексей Виноградов. Цель тестирования. А на самом деле?
QA Fest 2016. Алексей Виноградов. Цель тестирования. А на самом деле?
QAFest
 
Algorithms and programming lecture in ru
Algorithms and programming lecture in ruAlgorithms and programming lecture in ru
Algorithms and programming lecture in ru
ssuser0562f1
 
Алгоритмизация и программирование С/С++
Алгоритмизация и  программирование С/С++Алгоритмизация и  программирование С/С++
Алгоритмизация и программирование С/С++
ssuser0562f1
 
Лучшие практики на практике
Лучшие практики на практикеЛучшие практики на практике
Лучшие практики на практике
Denis Tuchin
 
Денис Тучин, Проверка гипотез Kanban Method с помощью имитационной модели
Денис Тучин, Проверка гипотез Kanban Method с помощью имитационной моделиДенис Тучин, Проверка гипотез Kanban Method с помощью имитационной модели
Денис Тучин, Проверка гипотез Kanban Method с помощью имитационной модели
ScrumTrek
 
Tech Talks @NSU: Рассказ о разных профессиях в IT-индустрии, или почему не вс...
Tech Talks @NSU: Рассказ о разных профессиях в IT-индустрии, или почему не вс...Tech Talks @NSU: Рассказ о разных профессиях в IT-индустрии, или почему не вс...
Tech Talks @NSU: Рассказ о разных профессиях в IT-индустрии, или почему не вс...
Tech Talks @NSU
 
Денис Тучин - Проверка гипотез Kanban Method с помощью имитационной модели
Денис Тучин - Проверка гипотез Kanban Method с помощью имитационной моделиДенис Тучин - Проверка гипотез Kanban Method с помощью имитационной модели
Денис Тучин - Проверка гипотез Kanban Method с помощью имитационной модели
Denis Tuchin
 

Similar to OOP и WordPress. Подумаем о будущем проекта. (20)

Как не сойти с ума при разработке крупных проектов на WordPress
Как не сойти с ума при разработке крупных проектов на WordPressКак не сойти с ума при разработке крупных проектов на WordPress
Как не сойти с ума при разработке крупных проектов на WordPress
 
Архитектура крупных WordPress сайтов
Архитектура крупных WordPress сайтовАрхитектура крупных WordPress сайтов
Архитектура крупных WordPress сайтов
 
Рефакторинг и второе рождение проекта на примере Zend Framework 2.0
Рефакторинг и второе рождение проекта на примере Zend Framework 2.0Рефакторинг и второе рождение проекта на примере Zend Framework 2.0
Рефакторинг и второе рождение проекта на примере Zend Framework 2.0
 
Максим Гуртовенко - The future is wild | HappyDev'12
Максим Гуртовенко - The future is wild | HappyDev'12Максим Гуртовенко - The future is wild | HappyDev'12
Максим Гуртовенко - The future is wild | HappyDev'12
 
Как жить в согласии с SOLID?
Как жить в согласии с SOLID?Как жить в согласии с SOLID?
Как жить в согласии с SOLID?
 
"Этот код плохой, его нужно переписать". Слышали? Как обосновать
"Этот код плохой, его нужно переписать". Слышали? Как обосновать"Этот код плохой, его нужно переписать". Слышали? Как обосновать
"Этот код плохой, его нужно переписать". Слышали? Как обосновать
 
Олег Бунин (Онтико) | Менеджмент и бизнес-процессы в разработке highload-прое...
Олег Бунин (Онтико) | Менеджмент и бизнес-процессы в разработке highload-прое...Олег Бунин (Онтико) | Менеджмент и бизнес-процессы в разработке highload-прое...
Олег Бунин (Онтико) | Менеджмент и бизнес-процессы в разработке highload-прое...
 
Автоматизация design patterns и компактный код вместе с PostSharp
Автоматизация design patterns и компактный код вместе с PostSharpАвтоматизация design patterns и компактный код вместе с PostSharp
Автоматизация design patterns и компактный код вместе с PostSharp
 
Meet Magento Belarus - Andriy Samilyak
Meet Magento Belarus - Andriy SamilyakMeet Magento Belarus - Andriy Samilyak
Meet Magento Belarus - Andriy Samilyak
 
История проекта, который никогда не падает / Андрей Шетухин
История проекта, который никогда не падает / Андрей ШетухинИстория проекта, который никогда не падает / Андрей Шетухин
История проекта, который никогда не падает / Андрей Шетухин
 
Автоматизация design patterns и компактный код вместе с PostSharp
Автоматизация design patterns и компактный код вместе с PostSharpАвтоматизация design patterns и компактный код вместе с PostSharp
Автоматизация design patterns и компактный код вместе с PostSharp
 
Benefits of unit-testing and inversion of controll
Benefits of unit-testing and inversion of controllBenefits of unit-testing and inversion of controll
Benefits of unit-testing and inversion of controll
 
«Особенности Agile-разработки интернет-проектов»
«Особенности Agile-разработки интернет-проектов»«Особенности Agile-разработки интернет-проектов»
«Особенности Agile-разработки интернет-проектов»
 
QA Fest 2016. Алексей Виноградов. Цель тестирования. А на самом деле?
QA Fest 2016. Алексей Виноградов. Цель тестирования. А на самом деле?QA Fest 2016. Алексей Виноградов. Цель тестирования. А на самом деле?
QA Fest 2016. Алексей Виноградов. Цель тестирования. А на самом деле?
 
Algorithms and programming lecture in ru
Algorithms and programming lecture in ruAlgorithms and programming lecture in ru
Algorithms and programming lecture in ru
 
Алгоритмизация и программирование С/С++
Алгоритмизация и  программирование С/С++Алгоритмизация и  программирование С/С++
Алгоритмизация и программирование С/С++
 
Лучшие практики на практике
Лучшие практики на практикеЛучшие практики на практике
Лучшие практики на практике
 
Денис Тучин, Проверка гипотез Kanban Method с помощью имитационной модели
Денис Тучин, Проверка гипотез Kanban Method с помощью имитационной моделиДенис Тучин, Проверка гипотез Kanban Method с помощью имитационной модели
Денис Тучин, Проверка гипотез Kanban Method с помощью имитационной модели
 
Tech Talks @NSU: Рассказ о разных профессиях в IT-индустрии, или почему не вс...
Tech Talks @NSU: Рассказ о разных профессиях в IT-индустрии, или почему не вс...Tech Talks @NSU: Рассказ о разных профессиях в IT-индустрии, или почему не вс...
Tech Talks @NSU: Рассказ о разных профессиях в IT-индустрии, или почему не вс...
 
Денис Тучин - Проверка гипотез Kanban Method с помощью имитационной модели
Денис Тучин - Проверка гипотез Kanban Method с помощью имитационной моделиДенис Тучин - Проверка гипотез Kanban Method с помощью имитационной модели
Денис Тучин - Проверка гипотез Kanban Method с помощью имитационной модели
 

OOP и WordPress. Подумаем о будущем проекта.