пост 19.10.2024
Фреймворки
Что такое фреймворк
В современных языках программирования есть устойчивые решения для определенных задач.
Их называют библиотеки или фреймворки.
В сущности, фреймворк - это “идея” того, как должно выглядеть приложение, как решать типичные задачи приложения. Идея, которая реализована в коде.
Если говорить именно о бэкенд-приложениях - они выполняют определенную последовательность действий: получить запрос каких-то данных от клиента, вытянуть эти данные из источника данных и отдать ответ, который клиент хочет.
Иногда нужно уметь запускать какие-то фоновые процессы, которые независимо от запросов к приложению что-то делают (например отправляют письма пользователям).
Иногда фреймворк решает вопрос “как запускать приложение”.
Многообразие фреймворков
По моему мнению ответ на вопрос “как выбрать фреймворк для моего проекта?” весьма простой “бери популярный фреймворк, на котором можешь разрабатывать”. Ключевое слово здесь “популярный”. Есть решения, которыми никто не пользуется. Их не обновляют, в них не появляется ничего нового и они, хоть и работают, не особо в ближайшем будущем кому-то нужны. А проект обычно склонен разрастаться и требовать поддержки. Поэтому берите популярный фреймворк.
Хороший фреймворк полон заготовками и примерами того, как реализовывать типичные задачи.
Хороший фреймворк имеет хорошую документацию.
У хорошего фреймворка достаточно частые обновления.
Хороший фреймворк поддерживает современные версии языка.
На хорошем фреймворке вы решаете свои задачи, а не занимаетесь пустой работой по долгой доработке окружения под свои нужды.
На PHP сегодня пример хорошего фреймворка это Laravel. На Python - Django.
Сколько нужно знать фреймворков, хватит ли одного?
Обычно чем больше вы знаете фреймворков, тем лучше. Но у вас должен быть один любимый, который вы обычно используете. Остальные можете знать посредственно.
Почему лучше вообще знать что-то ещё а не концентрироваться на одном?
Потому что у разных фреймворков разные основные идеи. В одних что-то реализовано так, в других эдак. Иногда изучая более старый фреймворк вы можете увидеть, к чему привели те или иные архитектурные решения. Почувствовать разницу подходов.
Зацикливаясь на одном фреймворке вы неминуемо ограничиваете себя. Смотрите шире, и тогда вы сможете увидеть немало интересного.
Например, когда-то я начинал изучать laravel - мне говорили что лучше yii2, а laravel это бесполезно.
В итоге я имел возможность работать и с тем, и с другим. Laravel оказался гораздо полезней, но знания yii мне тоже пригодились.
Главная ценность фреймворка
На мой взгляд, главная ценность фреймворка - это понятная командная работа. Вы и ваши товарищи по команде делают код в единой, понятной каждому из вас структуре. Вы используете одни и и те же абстракции для решения одних и тех же типичных задач.
Да, скорость разработки за счет переиспользования готовых решений тоже важна и она тоже возрастает. Но все же фреймворк тем и лучше набора библиотек, что он ставит рамки “как писать код”.
Когда-то в php не было фреймворков. Да и сейчас вы спокойно можете их не использовать, php настолько крут что он сам себе фреймворк. Но в те времена каждый проект был черным ящиком. Вещью в себе. Каждый раз все новое. Такие проекты обычно не были поддерживаемы, и после 2-3 итераций правок их можно было целиком выкидывать. Потому что было не понятно, что за хрень там написана.
Я начинал писать на laravel 4, а теперь у этого проекта мажорная версия 11. И если ты открываешь код на этом фреймворке - любую из этих версий - тебе понятно чего ждать. Это имеет ценность.