bash.im ithappens.me zadolba.li
12620

REST in peace

Я из тех новомодных хипстеров, что разбрасываются словами «инверсия управления», REST, «клиентская шаблонизация», MVVM и прочие Events Observer и Shadow DOM. Мы знаем и применяем эти страшные слова не потому, что хотим погнуть пальцы перед другими кодерами и инвесторами. Инвесторам зачастую вообще всё равно, на чём будет написан продукт, хоть на С++, а от слова «облако» у многих уже начинается нервный тик.

Прошли те времена, когда страница веб-сайта (или его админки) представляла собой отдельную сущность, управляющую одной-двумя связанными с ней моделями для БД через слой контроллера. Сейчас фронт веб-приложения рендерит огромное число данных, самыми невообразимыми путями связанными друг с другом, и изменение данных внутри одного виджета должно повлиять на перерисовку половины элементов страницы.

Я видел боль сторонников традиционных решений, когда их просят вставить маленький выпадающий список в админку: они берут уже готовые куски кода из контроллеров, которые задают эту сущность, копипастят в новый, что-то правят, что-то костыляют — и в результате данные, которые вообще не должны по принципам SOLID попадать в класс, в нём извлекаются.

Мне же на Ангуляре достаточно создать шаблон (или директиву) и инжектировать в контроллер ещё один сервис, потому что API для управления данных для этого маленького виджета выпадающего списка уже есть, ибо нужный список используется уже во многих местах системы. Час на разработку, час на создание автотестов — и новая нужная пользователям функция готова.

Тут должен быть рассказ про то, как я делал вёрстку в стиле HTML 4.0 для старых мобильных девайсов, но оставлю это для третьего участника, который традиционно примирит обе стороны.

Всем добра!