Costumo trabalhar mais com aplicativos da Web e, mesmo tentando ser geral, minha resposta pode não se aplicar à sua área de programação.
Também vou usar "framework" sinonquímico com "library".
Antes de implementar uma estrutura, é preciso considerar algumas coisas, aqui estão alguns exemplos gerais.
# 1 A estrutura economizará tempo e esforço?
A resposta a esta pergunta é quase sempre sim . Estruturas tendem a ser construídas para resolver problemas específicos e resolvê-los muito bem. Por exemplo, estruturas, como EntityFramework pode poupar inteiramente de escrever SQL-código. O que pode ser fantástico se sua equipe de programação não for fluente em SQL.
As estruturas são construídas para: a) adicionar uma interface amigável ao programador para componentes complexos ou b) adicionar abstração a componentes já conhecidos (ou estabelecidos).
O último (ou mesmo o primeiro em alguns casos) pode realmente atrapalhar o desenvolvimento. Isso se aplica especialmente quando você ou sua equipe de programação implementará uma nova estrutura, na qual eles nunca trabalharam antes.
Isso pode desacelerar seu processo de desenvolvimento, o que pode ser caro.
# 2 A escala do seu aplicativo
Dizem que "qualquer coisa que vale a pena fazer vale a pena exagerar" , mas geralmente não é esse o caso. Provavelmente, não há um bom motivo para implementar uma estrutura de tamanho grande, se o objetivo do seu aplicativo for imprimir "potato" .
Quando você está desenvolvendo um aplicativo (seja ele na Web, desktop, celular ou qualquer outro tipo de aplicativo concebível) - se você acha que o tamanho da sua estrutura "diminui" a sua (talvez futura) implementação, então isso pode ser um grande problema. sinal de aviso de que sua estrutura pode inchar seu aplicativo. Uma boa anedota seria se você incluísse o jQuery, apenas para adicionar uma classe "carregada" à sua etiqueta corporal quando o documento estiver pronto. Fazer isso apenas com JavaScript nativo pode ser um pouco mais difícil , mas não incha seu aplicativo.
Por outro lado, se uma estrutura faz muito trabalho sujo por dentro (ou seja, estruturas de banco de dados), pode ser viável implementá-la, mesmo se você estiver "parcialmente" usando a estrutura. Uma boa anedota seria não tentar criar seu próprio driver ADO.NET ou MongoDB, apenas porque você não precisa utilizar a biblioteca inteira.
Às vezes, as estruturas são de código aberto (e com licenças do tipo "faça o que você quiser"). Isso abre uma nova possibilidade em que uma equipe de programação pode optar apenas por partes de uma estrutura.
Em última análise, isso está relacionado à questão 1 e 3.
# 3 Impacto.
Às vezes, a implementação de uma estrutura pode afetar diretamente o usuário final. Isso é especialmente verdadeiro para aplicativos da Web, pois ter grandes estruturas do lado do cliente pode afetar negativamente a experiência do usuário final. Os usuários com máquinas mais lentas podem ter problemas de renderização lenta, problemas de desempenho com javascript ou problemas semelhantes causados por máquinas de baixa qualidade. O usuário com conexões lentas pode enfrentar tempos de carregamento lentos (pelo menos iniciais).
Mesmo em outros tipos de aplicativos, os usuários finais podem ser impactados negativamente por suas dependências de aplicativos. As estruturas, pelo menos, sempre ocupam algum espaço em disco e, se você estiver desenvolvendo um aplicativo móvel (ou mesmo um aplicativo de desktop), isso pode ser necessário para ser levado em consideração.
Estruturas do lado do servidor (ainda mais específicas da Web) provavelmente não afetarão seus usuários finais, mas afetarão sua infraestrutura . Algumas estruturas têm dependências próprias, o que pode exigir que você reinicie o servidor da Web, apenas o serviço ou o servidor completamente.
Algumas estruturas também podem ter muitos recursos.
É claro que isso remete aos pontos 1 e 2.
É tudo apenas um grande "círculo de considerações", e não existe um método científico real para decidir se você deve implementar uma estrutura ou não.
Corbin March resumiu muito bem:
Os grupos com os quais trabalhei fazem o mesmo: adivinhar custos e benefícios, escolher a rota mais produtiva e esperar que eles estejam certos. Não é terrivelmente científico - uma parte de intuição, três partes de experiência, uma parte de suscetibilidade ao marketing, uma parte de astúcia e cinco partes de opinião.
Também é importante não ser elitista . Frameworks são ferramentas que devem ser usadas. Conheço pessoas dos dois extremos; por um lado, você tem o cara que torna a vida muito difícil, por outro, o cara que cria aplicativos lentos e inchados.
Todas as estruturas têm casos de uso, é apenas uma questão de implementá-las para os propósitos corretos.