Здесь много комментариев о преимуществах использования фреймворка, и, конечно, я думаю, что во многих случаях они совершенно правильны.
ОДНАКО
Все фреймворки имеют недостаток в том, что у них есть область проблем, которая может быть встроена в них. Если ваша проблема выходит за рамки предметной области, то использование фреймворка не является проблемой, и большую часть времени становится очевидным, если ваша проблема находится далеко за пределами домена, поэтому вы об этом не задумываетесь. Проблемы возникают, когда вы пытаетесь втиснуть проблему в среду, в которую она просто не вписывается или имеет какую-то необычную нестандартную функцию - в этом случае вы действительно быстро завершаете 90% кода и тратите все свое время Сохранено выяснение того, как согнуть или расширить каркас, чтобы он мог выполнить некоторые непонятные требования. Поскольку в этом случае ваше решение / расширение должно подключаться к платформе, его часто бывает сложнее кодировать, чем если бы вы пришли к нему независимо.
При неправильных обстоятельствах это может привести к катастрофическим последствиям. Например, если клиент запрашивает проект, который, по вашему мнению, вписывается в каркасное решение, и вы соответственно цитируете его, то, выполнив 90%, вы обнаружите, что у вас есть проблемы, тогда вы действительно сможете справиться, особенно если это какая-то особенность клиента настаивает на (и это всегда так). Эти проблемы, как правило, возникают, потому что с самого начала не всегда очевидно, где могут лежать ошибки, особенно если вы используете платформу, с которой вы менее знакомы (и вам приходится время от времени).
Это действительно та же проблема, которая возникает при развертывании любого стороннего программного обеспечения в проекте. По своему опыту я не сомневаюсь в использовании фреймворков или подобных программ, но при выборе я всегда буду выбирать самую легкую, самую тонкую обертку, которую я смог найти, которая будет делать то, что мне нужно. Таким образом, я получаю преимущества, зная, что если проблемы все же возникают (а они, как правило, менее вероятны при использовании более тонкой оболочки), то выяснить, как их обойти, вероятно, будет проще, чем изучить обширную базу кода. где я могу безопасно изменить его.