Я склонен работать в основном с веб-приложениями, и хотя я стараюсь быть общим, мой ответ может не относиться к вашей области программирования.
Я также собираюсь использовать «каркас», синонимичный с «библиотекой».
Перед реализацией фреймворка необходимо рассмотреть несколько вещей, вот несколько общих примеров.
# 1. Сэкономит ли каркас время и усилия?
Ответ на этот вопрос почти всегда да . Фреймворки, как правило, строятся для решения конкретных проблем и решения их очень хорошо. Например, фреймворки, такие как EntityFramework, могут полностью избавить вас от написания SQL-кода. Что может быть фантастическим, если ваша команда программистов не владеет SQL.
Фреймворки построены так, чтобы: а) добавлять дружественный к программисту интерфейс для сложных компонентов, или б) добавлять абстракцию к уже известным (или установленным) компонентам.
Последнее (или даже первое в некоторых случаях) может реально помешать развитию. Это особенно актуально, когда вы или ваша команда разработчиков собираетесь внедрить новую среду, в которой они никогда раньше не работали.
Это может замедлить процесс разработки, что может быть дорогостоящим.
# 2 Масштаб вашего приложения
Говорят, что «все, что стоит делать, стоит переусердствовать» , но обычно это не так. Вероятно, нет веской причины для реализации суперразмерного фреймворка, если целью вашего приложения является печать «potato» .
Когда вы разрабатываете приложение (будь то веб-приложение, приложение для ПК, мобильное приложение или приложение любого другого мыслимого типа) - если вы чувствуете, что размер вашей среды «карликов» для вашей (возможно, будущей) реализации, то это может быть большим предупреждающий знак того, что ваш фреймворк может просто раздуть ваше приложение Хороший анекдот был бы, если бы вы включили jQuery, просто добавив «загруженный» класс к вашему тегу body, когда документ будет готов. Делать это с использованием только собственного JavaScript-кода может быть немного сложнее , но это не приведет к расширению вашего приложения.
С другой стороны, если фреймворк выполняет много грязной работы внутри (т. Е. Фреймворки баз данных), он может быть жизнеспособным для реализации, даже если вы только «частично» используете фреймворк. Хорошим анекдотом было бы не пытаться создать свой собственный ADO.NET или MongoDB-драйвер только потому, что вам не нужно использовать всю библиотеку.
Иногда фреймворки поставляются с открытым исходным кодом (и с лицензиями «делай, что хочешь»). Это открывает новую возможность, когда команда программистов может выбирать только части платформы.
В конечном итоге это связано с вопросами № 1 и № 3.
# 3 Воздействие.
Иногда реализация инфраструктуры может напрямую повлиять на конечного пользователя. Это особенно актуально для веб-приложений, поскольку наличие больших клиентских сред может негативно повлиять на работу конечного пользователя. Пользователи с более медленными компьютерами могут испытывать медленный рендеринг, проблемы с производительностью javascript или аналогичные проблемы, вызванные машинами ниже среднего Пользователь с медленными подключениями может испытывать медленное (по крайней мере начальное) время загрузки.
Даже в приложениях других типов конечные пользователи могут подвергаться негативному влиянию зависимостей вашего приложения. Фреймворки, по крайней мере, всегда занимают некоторое дисковое пространство, и если вы разрабатываете мобильное приложение (или даже приложение для настольного компьютера), это может потребоваться принять во внимание.
Серверные платформы (даже более специфичные для веб-сайтов), скорее всего, не будут влиять на ваших конечных пользователей, но это повлияет на вашу инфраструктуру . Некоторые фреймворки сами имеют зависимости, которые могут потребовать перезагрузки вашего веб-сервера, либо только сервиса, либо сервера целиком.
Некоторые структуры также могут быть очень ресурсоемкими.
Это, конечно, связано с пунктами № 1 и № 2.
Это всего лишь большой «круг вопросов», и нет никакого реального научного метода для решения, следует ли вам внедрять фреймворк или нет.
Корбин Марч суммировал это очень хорошо:
Все группы, с которыми я работал, делают одно и то же - угадывают затраты и выгоды, выбирают наиболее продуктивный маршрут и надеются, что они правы. Это не очень научно - одна часть интуиции, три части опыта, одна часть восприимчивости к маркетингу, одна часть хитрости и пять частей рейтинга.
Также важно не быть элитарным . Каркасы - это инструменты, предназначенные для использования. Я знаю людей обеих крайностей; с одной стороны, у вас есть парень, который делает жизнь очень сложной для себя, с другой стороны, у вас есть парень, который создает медленные, раздутые приложения.
Все фреймворки имеют прецеденты, это просто вопрос их реализации для правильных целей.