Как не сойти с ума при разработке крупных проектов на...

Post on 22-Nov-2014

328 Views

Category:

Software

1 Downloads

Preview:

Click to see full reader

DESCRIPTION

Видео на wordpress.tv: http://goo.gl/yTzYRq

TRANSCRIPT

Как не сойти с ума при разработке крупных проектов на WordPress

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

План1. Наши цели

2. Что может нас ожидать?

3. Полезные практики

4. Интеграция с плагинами

5. Безопасность

6. Модульная архитектура

7. Пример модульной темы

Наши цели

Чего мы хотим от проекта?

● Простота поддержки

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

○ Низкая себестоимость изменений

○ Минимум ошибок

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

Что может нас ожидать?

Сложность поддержки

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

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

● Кто так пишет? (стиль написания кода)

● Кто так пишет? (архитектура)

● Я не трогал этот модуль, откуда ошибка?

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

Что может нас ожидать?

Быстродействие \ Back-end

● Запросы в PHP циклах

● Повторяющиеся операции

● Структура БД

● Неоптимизированные запросы

Что может нас ожидать?

Быстродействие \ Front-end

● Большое количество медиа-файлов

● Растущий с прогрессией CSS

● Проблемы с JavaScript возникают редко

Пишем на одном языке … с другими WordPress-разработчиками

Используем возможности WordPress

● “wp_remote_…” вместо cURL

● “wp_mail” вместо PHPMailer

● “$wpdb” вместо “mysqli_query()”

Обработка исключений

Оповещение об ошибках

Организация хуков

Проблемы

● Поиск реализации

● Очерёдность выполнения

● Конфликты хуков

Решение

“Декларативность” -

Добавим немного правил

HTML-верстка

● Отделяем HTML-шаблоны от PHP

● Не пишем в них JavaScript

● У каждого модуля свои шаблоны

● Используем методологии вёрстки

Статические компоненты

У каждого модуля свои

Интеграция с плагинами

Пример 1: GravityForms

Интеграция с плагинами

Пример 2: WooCommerce

Безопасность

Построение архитектуры

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

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

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

● Зацепление

● Связность

● Полнота

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

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

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

Построение архитектуры

Что дают нам Модули?

● “Упрощение”

● Повторное использование

● Бесконфликтная работа команды

● Помодульные релизы

Пример модульной темы

Theme

Theme / core

Theme / core / libs

Theme / core / modules

Theme / core / modules / portfolio

Theme / core / modules / portfolio / static

Theme / core / modules / portfolio / widgets

Вопросы?

Спасибо!

top related