Как не сойти с ума при разработке крупных проектов на...
-
Upload
yevhen-kotelnytskyi -
Category
Software
-
view
339 -
download
1
description
Transcript of Как не сойти с ума при разработке крупных проектов на...
Как не сойти с ума при разработке крупных проектов на WordPress
Евгений КотельницкийWordCamp Russia 2014
Евгений Котельницкий
+YevhenKotelnytskyi
@yeeevhenhttp://4coder.info/me
План1. Наши цели
2. Что может нас ожидать?
3. Полезные практики
4. Интеграция с плагинами
5. Безопасность
6. Модульная архитектура
7. Пример модульной темы
Наши цели
Чего мы хотим от проекта?
● Простота поддержки
○ Низкий порог вхождения
○ Низкая себестоимость изменений
○ Минимум ошибок
● Отсутствие проблем с быстродействием
Что может нас ожидать?
Сложность поддержки
● Как найти / исправить ошибку?
● Где реализован этот блок?
● Кто так пишет? (стиль написания кода)
● Кто так пишет? (архитектура)
● Я не трогал этот модуль, откуда ошибка?
● Как я перенесу “часть изменений”?
Что может нас ожидать?
Быстродействие \ Back-end
● Запросы в PHP циклах
● Повторяющиеся операции
● Структура БД
● Неоптимизированные запросы
Что может нас ожидать?
Быстродействие \ Front-end
● Большое количество медиа-файлов
● Растущий с прогрессией CSS
● Проблемы с JavaScript возникают редко
Пишем на одном языке … с другими WordPress-разработчиками
Стандарты кодирования● PHP Coding Standards
● HTML Coding Standards
● CSS Coding Standards
● JavaScript Coding Standards
Пишем на одном языке … с другими 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
Вопросы?
Спасибо!