OOP и WordPressПодумаем о будущем проекта
Евгений КотельницкийWordCamp Kyiv, 2016
● Хотим простоты поддержки
○ низкий порог вхождения;
○ низкая цена изменений;
○ минимум ошибок и сбоев;
● Отсутствие проблем с быстродействием
● Отсутствие уязвимостей
● Хотим повторно использовать код
Наши цели
VS
Зачем ООП?
● Как исправить ошибку?
● Где реализован этот блок?
● Зачем тут это?
● Я же не трогал этот модуль?
● Как я перенесу “часть изменений”?
● Как взять часть кода из другого проекта?
● *** ?
●
???
Что такое ООП?
Осторожно, очевидные вещи
Инкапсуляция
Ƚɪɚɞɢ�Ȼɭɱ�«Объектно-ориентированный анализ и проектирование»
Полиморфизм
Наследование
● Более дорогие разработчики
● Повышенные затраты (на начальном этапе)
● Сложности оптимизации (запросы к БД в
циклах)
● ...
Немного негатива
Нет времени на ООП
Нет времени на ООП
Диаграммы Классов
Отношения в диаграммах Классов
Generalization (наследование)
Implementation (имплементация)
Association (ассоциация)
Aggregation (агрегация)
Composition (композиция)
Dependency (зависимость)
programador.ru/uml-class-diagram-relation/
Классы ядра WordPress
>G<NN��T�D?B@O�@SO@I?N����D?B@O�£
�¥¥
�¥��@ON�PK�OC@�RD?B@ON�I<H@�@O>
�¥�
KP=GD>�API>ODJI�>JINOMP>O� �£
´RD?B@OJKN�Ó�<MM<T��
®>G<NNI<H@®�ÓÕ�®HTRD?B@O®�
®?@N>MDKODJI®�ÓÕ�®�T��D?B@O�DN�<R@NJH@®�
�
K<M@IO��>JINOMP>O��®HTRD?B@O®��®�T��D?B@O®��´RD?B@OJKN� �
¤
������
¤
Виджеты // Класс виджета
<??<>ODJI��®RD?B@ONDIDO®��API>ODJI� £
M@BDNO@MRD?B@O��®�T�D?B@O®� �
¤ �
Виджеты // Регистрация виджета
>G<NN��T�GPBDI�£
�¥¥
�¥��@ON�PK�OC@�KGPBDI
�¥�
API>ODJI�DIDO� �£
<??<>ODJI��®RD?B@ONDIDO®��API>ODJI� �£
M@BDNO@MRD?B@O��®�T�D?B@O®� �
¤ �
¤
¤
Виджеты // Регистрация виджета №2
>G<NN��T�GPBDI�£
�¥¥
�¥��@ON�PK�OC@�KGPBDI
�¥�
API>ODJI�DIDO� �£
<??<>ODJI��®RD?B@ONDIDO®��<MM<T��´OCDN��®RD?B@ONDIDO® � �
¤
�¥¥
�¥��@ON�PK�RD?B@ON
�¥�
KP=GD>�API>ODJI�RD?B@ONDIDO� �£
M@BDNO@MRD?B@O��®�T�D?B@O®� �
¤
¤
Виджеты // Регистрация виджета №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
Объектно Ориентированная Архитектура
Пойдём немного дальше
Осторожно, нудная теория
Архитектура ПО - многоуровневая система абстракций.
Качество абстракции
● Зацепление
● Связность
● Полнота
● Достаточность
● Примитивность
Качество классов и объектов, Гради Буч
Качество архитектуры
● Квалификация команды
● Мотивация команды
● Сроки и бюджет
Что влияет на качество
● Прозрачность в целях
● Правильно настроенный процесс
Вопросы?
Спасибо!