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

50
OOP и WordPress Подумаем о будущем проекта Евгений Котельницкий WordCamp Kyiv, 2016

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

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

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

Евгений КотельницкийWordCamp Kyiv, 2016

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

Евгений Котельницкий

@yeeevhen

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

● Хотим простоты поддержки

○ низкий порог вхождения;

○ низкая цена изменений;

○ минимум ошибок и сбоев;

● Отсутствие проблем с быстродействием

● Отсутствие уязвимостей

● Хотим повторно использовать код

Наши цели

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

VS

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

Зачем ООП?

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

● Как исправить ошибку?

● Где реализован этот блок?

● Зачем тут это?

● Я же не трогал этот модуль?

● Как я перенесу “часть изменений”?

● Как взять часть кода из другого проекта?

● *** ?

???

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

Что такое ООП?

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

Осторожно, очевидные вещи

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

Инкапсуляция

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

Ƚɪɚɞɢ�Ȼɭɱ�«Объектно-ориентированный анализ и проектирование»

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

Полиморфизм

Page 14: OOP и WordPress. Подумаем о будущем проекта.
Page 15: OOP и WordPress. Подумаем о будущем проекта.
Page 16: OOP и WordPress. Подумаем о будущем проекта.

Наследование

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

● Более дорогие разработчики

● Повышенные затраты (на начальном этапе)

● Сложности оптимизации (запросы к БД в

циклах)

● ...

Немного негатива

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

Нет времени на ООП

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

Нет времени на ООП

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

www.uml.org

Язык моделирования UML

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

Диаграммы Классов

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

Отношения в диаграммах Классов

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

Generalization (наследование)

Implementation (имплементация)

Association (ассоциация)

Aggregation (агрегация)

Composition (композиция)

Dependency (зависимость)

programador.ru/uml-class-diagram-relation/

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

Классы ядра WordPress

Page 28: OOP и 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@O­JKN�Ó�<MM<T��

®>G<NNI<H@®�ÓÕ�®HT­RD?B@O®�

®?@N>MDKODJI®�ÓÕ�®�T��D?B@O�DN�<R@NJH@®�

 �

K<M@IO��­­>JINOMP>O��®HT­RD?B@O®��®�T��D?B@O®��´RD?B@O­JKN� �

¤

������

¤

Виджеты // Класс виджета

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

<??­<>ODJI��®RD?B@ON­DIDO®��API>ODJI� £

M@BDNO@M­RD?B@O��®�T­�D?B@O®� �

¤ �

Виджеты // Регистрация виджета

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

>G<NN��T­�GPBDI�£

�¥¥

�¥��@ON�PK�OC@�KGPBDI

�¥�

API>ODJI�DIDO� �£

<??­<>ODJI��®RD?B@ON­DIDO®��API>ODJI� �£

M@BDNO@M­RD?B@O��®�T­�D?B@O®� �

¤ �

¤

¤

Виджеты // Регистрация виджета №2

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

>G<NN��T­�GPBDI�£

�¥¥

�¥��@ON�PK�OC@�KGPBDI

�¥�

API>ODJI�DIDO� �£

<??­<>ODJI��®RD?B@ON­DIDO®��<MM<T��´OCDN��®RD?B@ON­DIDO® � �

¤

�¥¥

�¥��@ON�PK�RD?B@ON

�¥�

KP=GD>�API>ODJI�RD?B@ON­DIDO� �£

M@BDNO@M­RD?B@O��®�T­�D?B@O®� �

¤

¤

Виджеты // Регистрация виджета №3

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

Правильный плагин

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

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/

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

Core Classes

Page 35: OOP и WordPress. Подумаем о будущем проекта.
Page 36: OOP и WordPress. Подумаем о будущем проекта.
Page 37: OOP и WordPress. Подумаем о будущем проекта.

Admin Classes

Page 38: OOP и WordPress. Подумаем о будущем проекта.
Page 39: OOP и WordPress. Подумаем о будущем проекта.
Page 40: OOP и WordPress. Подумаем о будущем проекта.

Ещё примеры

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

CRON

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

DB Abstractions

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

Объектно Ориентированная Архитектура

Пойдём немного дальше

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

Осторожно, нудная теория

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

Архитектура ПО - многоуровневая система абстракций.

Качество абстракции

● Зацепление

● Связность

● Полнота

● Достаточность

● Примитивность

Качество классов и объектов, Гради Буч

Качество архитектуры

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

● Квалификация команды

● Мотивация команды

● Сроки и бюджет

Что влияет на качество

● Прозрачность в целях

● Правильно настроенный процесс

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

Вопросы?

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

Спасибо!