Isso pode ser muito subjetivo e depende de sua psicologia e sensibilidade, mas minhas bibliotecas mais duradouras que venho usando para meus projetos pessoais e que não começaram a odiar ao longo dos anos sempre foram as menores e mais isoladas (sem dependências externas para outras bibliotecas).
É porque é preciso apenas uma idéia idiota ou arcaica para mexer com toda a minha percepção da biblioteca. Como se eu tivesse um código C perfeitamente razoável para rasterizar formas em uma biblioteca de desenhos, exceto que depende de uma biblioteca de imagens e matemática que escrevi nos anos 90 contra imagens de 16 bits que, em retrospecto, agora são totalmente desprezíveis. Eu também poderia ter uma biblioteca de análise C ++ com algum código de análise decente e código AST, exceto que eu a juntei a um fluxo de análise monolítico que, em retrospecto, era um design realmente tolo e impraticável. Então agora tudo parece uma merda. A maior parte do meu código C ++ dos anos 90 é uma porcaria total para mim agora, porque eu realmente não sabia como projetar efetivamente em C ++ naquela época e fiz coisas idiotas como usar a herança para "estender" e forneça funcionalidades de superconjunto, formando classes com mais de 100 membros e abstrações patetas, em vez de modelar subtipos adequados com interfaces minimalistas. Mais do meu código C sobreviveu ao meu filtro de merda, embora apenas uma fração. Principalmente eu vim com uma montanha de merda. As pequenas pepitas de ouro que pude escolher sempre foram o código minimalista mais dissociado, com a maior singularidade de propósito e, muitas vezes, dependendo de pouco mais do que tipos de dados primitivos.
Então, eu nem quero mais me incomodar com essas bibliotecas, exceto talvez portar o código para uma nova lib que não se incomode com elas e que funcione apenas contra pixels brutos de 32 e 128 bits e enfatize a matemática do vetor em vez de depender de alguma biblioteca matemática externa para, digamos, a biblioteca de rasterização. Então o código dura muito mais e me deixa feliz. Sou meio cínico com minhas visões de bibliotecas. Costumo julgá-los pelos elos mais fracos, em vez dos mais fortes. Não posso ignorar o mal a favor do bem até que o mal seja completamente eliminado dessa biblioteca.
Por isso, voto nas bibliotecas menores e mais independentes, pois elas têm uma probabilidade menor, pelo menos para mim, de sentir que são uma merda mais tarde. Se você estiver trabalhando em uma equipe, eu votaria ainda mais com padrões mais fortes para manter as bibliotecas separadas, uma vez que elas podem ficar bagunçadas muito rápido com muitas mãos, a menos que tenham um objetivo e um objetivo muito singulares em direção ao minimalismo (procurando razões para não adicionar mais em vez de sempre encontrar razões para adicionar mais - você não pode odiar o que não adiciona) ... embora parecesse a pergunta de que isso era mais para projetos pessoais onde talvez fatores psicológicos em mais. Mas, além disso, eu votaria para separar peças de funcionalidade muito dissociadas. Você não precisa necessariamente dividir sua estrutura para todas as peças que deseja imediatamente. EU'