codefest 2011. Макаров А. — Как разрабатывается yii
DESCRIPTION
TRANSCRIPT
![Page 1: CodeFest 2011. Макаров А. — Как разрабатывается Yii](https://reader031.vdocuments.site/reader031/viewer/2022012405/5478e9e6b4af9fc9158b46d5/html5/thumbnails/1.jpg)
Как разрабатывается
Макаров Александр
Yii core team
![Page 2: CodeFest 2011. Макаров А. — Как разрабатывается Yii](https://reader031.vdocuments.site/reader031/viewer/2022012405/5478e9e6b4af9fc9158b46d5/html5/thumbnails/2.jpg)
Что такое Yii?
� PHP5 MVC фреймворк.
�Лёгкий и быстрый.
�Мощный и гибкий.
� Красивый API.
�Пересекаетсяс Prado,
Rails, Symfony иJoomla.
� Свой Active Record.
� I18n на основе CLDR.
� Кэш с зависимостями
и кучей бэкэндов.
� RBAC.
� Консоль.
� Генератор кода.
�…
Prado, с 2004 → Yii 1.0, 2008 → Yii 1.1, 2010
![Page 3: CodeFest 2011. Макаров А. — Как разрабатывается Yii](https://reader031.vdocuments.site/reader031/viewer/2022012405/5478e9e6b4af9fc9158b46d5/html5/thumbnails/3.jpg)
Типичный action
public function actionView($id)
{
$post = Post::model()->findByPk($id);
if(!$post)
throw new CHttpException(404);
$this->render('view', array(
'post' => $post,
));
}
![Page 4: CodeFest 2011. Макаров А. — Как разрабатывается Yii](https://reader031.vdocuments.site/reader031/viewer/2022012405/5478e9e6b4af9fc9158b46d5/html5/thumbnails/4.jpg)
И немного AR посложнее
$posts = Post::model() ->taggedWith(array('yii',
'CodeFest'))->published()->with('comments')-
>findAll();
foreach($posts as $post){
echo $post->title;
foreach($post->comments as $comment){
echo $comment->text;
}
}
![Page 5: CodeFest 2011. Макаров А. — Как разрабатывается Yii](https://reader031.vdocuments.site/reader031/viewer/2022012405/5478e9e6b4af9fc9158b46d5/html5/thumbnails/5.jpg)
Откуда такое название?
• Yes It Is (2010)
• Easy Efficient Extensible (2009)
• Китайский символ Yi:
– Лёгкость, простота.
– Изменчивость и гибкость.
– Постоянство. Главные принципы не меняются.
“Yi ching”, “Книга перемен”.
![Page 6: CodeFest 2011. Макаров А. — Как разрабатывается Yii](https://reader031.vdocuments.site/reader031/viewer/2022012405/5478e9e6b4af9fc9158b46d5/html5/thumbnails/6.jpg)
ЗачемЗачем велосипедвелосипед ии почемупочему MVC?MVC?
• Во времена Prado не было нормальной
альтернативы.
• Prado заимствовал у ASP.NET. Чужеродно.
• MVC популярен и удобен.
• Существующие в 2008 году фреймворки не
устраивали.
![Page 7: CodeFest 2011. Макаров А. — Как разрабатывается Yii](https://reader031.vdocuments.site/reader031/viewer/2022012405/5478e9e6b4af9fc9158b46d5/html5/thumbnails/7.jpg)
ИногдаИногда велосипедвелосипед —— этоэто
хорошохорошо!!
![Page 8: CodeFest 2011. Макаров А. — Как разрабатывается Yii](https://reader031.vdocuments.site/reader031/viewer/2022012405/5478e9e6b4af9fc9158b46d5/html5/thumbnails/8.jpg)
Заимствование
• Стоит ли смотреть на других?
• Заимствование идей в неизменном виде.
?
![Page 9: CodeFest 2011. Макаров А. — Как разрабатывается Yii](https://reader031.vdocuments.site/reader031/viewer/2022012405/5478e9e6b4af9fc9158b46d5/html5/thumbnails/9.jpg)
Сообщество и компания
Сообщество
� Фреймворк не
подпиливается под
конкретные проекты.
� Заинтересовано в
оттачивании инструмента.
� Готово к обсуждениям.
� Работает на репутацию.
� Принимает решения
относительно быстро.
Компания
× Заинтересована в
получении прибыли.
× Фреймворк часто является
побочным продуктом
проектов компании.
× Работает за деньги.
× Часто откладывает
принятие решений.
![Page 10: CodeFest 2011. Макаров А. — Как разрабатывается Yii](https://reader031.vdocuments.site/reader031/viewer/2022012405/5478e9e6b4af9fc9158b46d5/html5/thumbnails/10.jpg)
КомпанияКомпания —— злозло длядля фреймворкафреймворка??
• Не всегда.
• Acquia, Lullabot (Drupal)
• Percona (MySQL)
• Zabbix
![Page 11: CodeFest 2011. Макаров А. — Как разрабатывается Yii](https://reader031.vdocuments.site/reader031/viewer/2022012405/5478e9e6b4af9fc9158b46d5/html5/thumbnails/11.jpg)
Почему BSD?
• Фреймворк — инструмент.
• Чтобы код «жил» его должны серьёзно
использовать.
• Серьёзно = для получения прибыли.
• BSD не ограничивает коммерческое
использование.
![Page 12: CodeFest 2011. Макаров А. — Как разрабатывается Yii](https://reader031.vdocuments.site/reader031/viewer/2022012405/5478e9e6b4af9fc9158b46d5/html5/thumbnails/12.jpg)
СообществоСообщество
Yii
• Оттянул на себя часть
сообщества Prado
• Не превратиться в
helpdesk
• Повторяющиеся вопросы
→ wiki, поиск
• Мало пишут — не всегда
плохо
В общем
• Интересные уникальные
решения, рецепты
• Собрать лояльное ядро
• Обучить на личном
примере, что для
сообщества хорошо
• Оставить шанс показать
себя
![Page 13: CodeFest 2011. Макаров А. — Как разрабатывается Yii](https://reader031.vdocuments.site/reader031/viewer/2022012405/5478e9e6b4af9fc9158b46d5/html5/thumbnails/13.jpg)
Новые предложения
Необходимо?Необходимо?
Типично?Типично?
ОбсуждениеОбсуждение
РеализацияРеализация
![Page 14: CodeFest 2011. Макаров А. — Как разрабатывается Yii](https://reader031.vdocuments.site/reader031/viewer/2022012405/5478e9e6b4af9fc9158b46d5/html5/thumbnails/14.jpg)
«Ну и что... Это ситуация когда
количество параметров меньше и
тут все OK. А ситуация с зомби
совсем другая»
![Page 15: CodeFest 2011. Макаров А. — Как разрабатывается Yii](https://reader031.vdocuments.site/reader031/viewer/2022012405/5478e9e6b4af9fc9158b46d5/html5/thumbnails/15.jpg)
Команда Yii
• 6 разработчиков.
• Технический писатель.
• ~50 переводчиков.
• Приоритеты:
– Стабильность кода.
– Надёжность кода.
– Единый стиль.
• Количество
разработчиков не
растёт т.к. рост
означает:
– Больше времени на
общение, меньше на
код.
– Возможные
конфликты.
![Page 16: CodeFest 2011. Макаров А. — Как разрабатывается Yii](https://reader031.vdocuments.site/reader031/viewer/2022012405/5478e9e6b4af9fc9158b46d5/html5/thumbnails/16.jpg)
Use the force and read the sourceUse the force and read the source!!
![Page 17: CodeFest 2011. Макаров А. — Как разрабатывается Yii](https://reader031.vdocuments.site/reader031/viewer/2022012405/5478e9e6b4af9fc9158b46d5/html5/thumbnails/17.jpg)
Нет уж, спасибо!
![Page 18: CodeFest 2011. Макаров А. — Как разрабатывается Yii](https://reader031.vdocuments.site/reader031/viewer/2022012405/5478e9e6b4af9fc9158b46d5/html5/thumbnails/18.jpg)
Документация
• Код без документации — мусор.
• 40% успешности проекта — документация.
• Пишем код — обновляем документацию.
• Всегда сразу документируем методы,
классы и свойства.
• Важны примеры, но слишком много
примеров — тоже плохо.
![Page 19: CodeFest 2011. Макаров А. — Как разрабатывается Yii](https://reader031.vdocuments.site/reader031/viewer/2022012405/5478e9e6b4af9fc9158b46d5/html5/thumbnails/19.jpg)
Почему код должен быть
приятным?
• Чтобы проект доставлял разработчику не
меньше удовольствия, чем пользователям.
• Чтобы не тратить неоправданно много
времени на документацию.
• Деньги, время, мотивация.
![Page 20: CodeFest 2011. Макаров А. — Как разрабатывается Yii](https://reader031.vdocuments.site/reader031/viewer/2022012405/5478e9e6b4af9fc9158b46d5/html5/thumbnails/20.jpg)
Каким должен быть API?
• Согласованный. Всё в одном стиле.
• Не сложный. Сложность = много всего.– Магия, если она есть, должна обязательно быть
однозначной и, по возможности, простой.
• Гибкий. Легко поменять поведение.
• Документированный.
• Гибкость vs простота.– Крайности. God object.
• Решение: фасад для скрытия деталей, адаптер длявыравнивания API.
![Page 21: CodeFest 2011. Макаров А. — Как разрабатывается Yii](https://reader031.vdocuments.site/reader031/viewer/2022012405/5478e9e6b4af9fc9158b46d5/html5/thumbnails/21.jpg)
Готового идеала нет
• В больших проектах всегда приходится что-
то подпиливать.
– Как потом обновлять?
– Как ничего не сломать?
• В фреймворк нельзя встроить всё.
– Надо ещё и сторонний код пилить?
– А вдруг не заработает?
![Page 22: CodeFest 2011. Макаров А. — Как разрабатывается Yii](https://reader031.vdocuments.site/reader031/viewer/2022012405/5478e9e6b4af9fc9158b46d5/html5/thumbnails/22.jpg)
ВерсииВерсии ии обратнаяобратная совместимостьсовместимость
1.1.x — обратно совместимые релизы.
– Небольшие документированные изменения.
– Новые возможности.
– Подходит для обновления уже начатыхпроектов.
1.x.0 — частичная несовместимость.
– Обновить проект возможно, но затратно.
x.0.0 — более свежие возможности безоглядки на обратную совместимость.
![Page 23: CodeFest 2011. Макаров А. — Как разрабатывается Yii](https://reader031.vdocuments.site/reader031/viewer/2022012405/5478e9e6b4af9fc9158b46d5/html5/thumbnails/23.jpg)
Поддержка старых версий
Проект
• Делается не один месяц,
за это время выходит
обратно несовместимая
версия.
• Немедленное
адаптирование под неё —
потеря времени и денег.
• Возможно, стоит
остановиться, но как быть
с багами в фреймворке?
Фреймворк
• Поддерживать все старые
версии нереально →
ограничиваем время
поддержки.
• Не перетаскиваем новые
возможности в старые
версии. Исправляем
ошибки.
![Page 24: CodeFest 2011. Макаров А. — Как разрабатывается Yii](https://reader031.vdocuments.site/reader031/viewer/2022012405/5478e9e6b4af9fc9158b46d5/html5/thumbnails/24.jpg)
ИнструментарийИнструментарий
• «Одноразовую» миграцию данных в
большинстве случаев приходится делать
много раз.
• Код надо тестировать.
• Однотипный код писать лень.
• IDE должны поддерживать код.
• Отладка — это важно.
![Page 25: CodeFest 2011. Макаров А. — Как разрабатывается Yii](https://reader031.vdocuments.site/reader031/viewer/2022012405/5478e9e6b4af9fc9158b46d5/html5/thumbnails/25.jpg)
ПроизводительностьПроизводительность ии оптимизацияоптимизация
• Yii быстрый т.к. загружается только то, чтонужно. Используется SPL __autoload.
• Не подключаемся к БД, пока непонадобится, не парсим запрос пока непотребуют и т.д.
• Если код используется часто и много —производительность важнее фич.
• Если используется редко —производительность не так важна.
![Page 26: CodeFest 2011. Макаров А. — Как разрабатывается Yii](https://reader031.vdocuments.site/reader031/viewer/2022012405/5478e9e6b4af9fc9158b46d5/html5/thumbnails/26.jpg)
Yii Yii —— этоэто хорошохорошо!!
![Page 27: CodeFest 2011. Макаров А. — Как разрабатывается Yii](https://reader031.vdocuments.site/reader031/viewer/2022012405/5478e9e6b4af9fc9158b46d5/html5/thumbnails/27.jpg)
СпасибоСпасибо
• http://yiiframework.com/
• http://yiiframework.ru/
• http://rmcreative.ru/
• Принимаются
– Отзывы
– Идеи
– Предложения