Записи с меткой «Рефакторинг»
На дебютном январском BeerPHP SPB Meetup #1 выступил с рассказом о своём опыте избавления от легаси-кода и обновления фреймворка в проекте. Про эволюционное переписывание, внедрение автоматизации тестирования и деплоя. О том, что помогало обновлению и что мешало.
Вчера после окончания интенсива провели бесплатный дополнительный урок с ответами на вопросы по ООП. Поговорили ещё раз об ответственностях контроллеров, немного про MVC, View Model и фреймворки, повторили критерии выноса кода в отдельные компоненты. Личных вопросов не было, поэтому с разрешения участников выкладываю запись для всеобщего просмотра.
Как-то давно у меня спрашивали, как сделать хранение пользовательского контента в разных базах данных, а недавно этот же вопрос всплыл на форуме вновь: «Подскажите в общих чертах, как можно реализовать динамическое переключение между базами в зависимости от подключенного пользователя».
В предыдущем рефакторинге мы начали перемещать переводы и конфигурацию в модули. Осталось сделать ещё одну вещь, незаметную снаружи, но очень важную для структуры приложения. А именно, довести разбивку на модули до логического завершения.
В нашем проекте хоть и есть модульная структура, но она пока модульная не полностью. Предыдущие главы были немного дополнены и изменены. Если вы следили за обновлениями в комментариях, то могли заметить, что мы немного исправили наш проект. Сегодня мы как раз рассмотрим эти исправления.
Большинство рецептов по Yii на этом сайте так или иначе сводятся к написанию поведения и подключению его к своему проекту. В обсуждении статьи о шаблонизаторе для вывода виджетов появился комментарий с просьбой подробно осветить работу с поведениями и, собственно, объяснить, для чего же они на самом деле нужны и почему их любят использовать некоторые продвинутые разработчики.
Любой программист с опытом осознаёт, что в неудачно спроектированном тяжёлом проекте изначально или со временем накапливается много неуправляемого и ненужного мусора. Это, например, повторяющийся код. В описании контроллера официального руководства Yii Framework указано, что Yii поддерживает вынос действий в отдельные классы и описывается процедура подключения этих действий к контроллерам. Но мало кто пользуется этим способом, так как не находит действительно тяжёлых повторяющихся экшенов.