oop и wordpress. Подумаем о будущем проекта

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

Upload: oleksandr-strikha

Post on 14-Apr-2017

103 views

Category:

Internet


2 download

TRANSCRIPT

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. Подумаем о будущем проекта

Спасибо!