Estou em uma situação em que posso usar um plug-in JavaScript de código aberto para realizar uma tarefa. Mas quando tentei usá-lo, percebi que precisava redesenhar muitas coisas do que já havia feito e isso acrescenta certa complexidade, na minha humilde opinião, ao projeto. Considerando que posso realizar a mesma tarefa com um código limpo, posso me elaborar e sem precisar alterar o que fiz até agora.
Você deve optar por uma biblioteca de qualquer maneira nesta situação (por uma questão de código de melhor qualidade?)
code-quality
libraries
Billal Begueradj
fonte
fonte
Respostas:
Como engenheiro, talvez seja adequado pensar nisso como um problema de otimização. Naturalmente, devemos ter um objetivo de otimização . Uma situação comum nesse tipo de situação seria minimizar o Custo Total de Propriedade .
Se você acredita que adicionar o componente de terceiros economizará custos a longo prazo, use-o. Se não, você não deveria. Certifique-se de considerar o custo da manutenção contínua (por exemplo, quando uma nova versão do O / S é lançada, ou uma falha de segurança é encontrada, ou alguma nova especificação do W3C é lançada).
Para muitos problemas triviais, será mais barato aumentar o seu, mas para problemas moderadamente complexos fora da competência principal da organização, geralmente fará sentido contratar terceiros.
Existem outros objetivos a serem considerados também (por exemplo, risco), mas o TCO é o grande.
fonte
Bill Gates disse certa vez:
Essa citação vem à mente porque, em última análise, o mesmo pode ser dito para o número de bibliotecas. Como regra, eu não uso bibliotecas, a menos que:
Idealmente, todas as três condições são atendidas, mas eu aceitaria duas. Resumindo, você não deve adicionar uma biblioteca ao seu programa, a menos que sirva a um propósito. Se você precisar perguntar qual é esse objetivo, provavelmente não deve adicioná-lo ao seu programa. A qualidade do código do seu programa, portanto, se beneficia, pois chama elegantemente cada biblioteca sem ser sobrecarregada pela necessidade de necessariamente reescrever as bibliotecas dentro do seu programa.
Boa sorte!
fonte
(Nota: A pergunta original era: o número de bibliotecas melhora a qualidade do código?)
Você provavelmente pode responder a si mesmo: Não, é claro que o simples fato de usar bibliotecas não melhora seu código. Se o fizesse, seria fácil escrever um ótimo código para tudo sem nenhum esforço.
O que as pessoas querem dizer quando recomendam a reutilização por conta própria é que o código em uma biblioteca conhecida provavelmente é mais correto, eficiente e / ou utilizável do que você imaginaria, simplesmente porque os autores passaram muito mais tempo em uma área específica de funcionalidade que você (com seu prazo final para todo o projeto) pode pagar.
Mas isso é apenas uma tendência, não uma lei. Certamente, pode haver bibliotecas que não são tão úteis quanto o roll-your-own. Freqüentemente, isso acontece quando a biblioteca realmente faz muito mais do que o necessário e o faz de uma maneira que o forçaria a adaptar sua própria base de código às convenções deles muito mais do que o razoável. Parece que foi exatamente isso que você encontrou nesta instância.
fonte
Embora o uso das bibliotecas corretas possa economizar muito trabalho, também há muito custo oculto:
Portanto, antes de adicionar outra dependência ao seu projeto para incluir algo que você poderia escrever, faça uma análise de custo / benefício.
fonte
Isso não precisa ser uma decisão binária: use apenas uma biblioteca OSS ou programe uma nova solução do zero. Outra opção pode ser a reutilização de partes da biblioteca, se a licença permitir.
Por exemplo, no meu campo (software numérico), uma biblioteca pode ter módulos básicos finos e alguns módulos especializados com os quais estou apenas 80% satisfeito. Então, eu usaria os módulos principais e escreveria um invólucro para os módulos especializados. Ou posso desenvolver meus próprios módulos especializados usando o design e o código dos módulos OSS. Os bits algorítmicos mais difíceis geralmente são reutilizados a partir deles, com apenas o código do andaime modificado. Também posso limpar um pouco do código original. Isso provou uma boa experiência de aprendizado e uma economia de tempo, em comparação com o desenvolvimento do zero.
fonte
Se alguém já fez o trabalho para você, é claro que você deve usá-lo.
A exceção à regra é javascript. Onde eles importaram uma dúzia de outras bibliotecas (versões obsoletas, é claro) para adicionar os recursos de idioma que desejam usar e, em seguida, fizeram o trabalho para você.
Escolha sua estrutura e permaneça nela. Se a biblioteca funcionar com sua estrutura ou js simples, tudo bem. Mas se precisar de uma estrutura diferente, procure outra opção.
fonte
Bibliotecas e quando usá-las é uma decisão complicada.
Por um lado, você testou bem coisas quase padrão (no meu campo, o FFTW, por exemplo, se enquadra nessa categoria, ou algo como libsndfile), que geralmente são reconhecidos por apenas funcionar, e têm sido coisas padrão nos últimos 20 anos que todo mundo usa.
Por outro lado, você tem coisas aleatórias no github, sem suíte de testes e apenas cerca de 1 mantenedor, geralmente por que se preocupar?
O teste de ácido para mim é, em primeiro lugar, a biblioteca se encaixa na minha arquitetura (às vezes, se você sabe que deseja usar uma determinada biblioteca, acaba projetando em torno disso), e acho que vou acabar depurando o código da biblioteca de outra pessoa ? Um bom proxy para a segunda pergunta é "Existe um conjunto de testes automatizado e como é a documentação?".
Um pouco de depuração não é um grande problema, mas nesse momento o código da biblioteca começa a contar com o meu próprio tamanho de código de uma perspectiva de manutenção (mais ainda se minhas correções não puderem ser enviadas para o upstream por algum motivo).
Eu também diferenciaria bibliotecas e estruturas, apesar de a distinção às vezes não ser tão clara, as estruturas no meu mundo (pequeno núcleo, pesado em DSP) tendem a ser um pé no saco, especialmente se você estiver tentando mesclar mais do que isso. um ou fazer algo um pouco fora das linhas, as bibliotecas às vezes são úteis. Estou ciente de que isso é visto de maneira muito diferente na cena de desenvolvimento da web.
No final das contas, é uma decisão que se resume ao gosto e à experiência, e mesmo os experientes às vezes escolhem mal, ainda pelo menos com uma biblioteca, você sempre pode separá-lo e escrever sua própria implementação, se isso for muito irritante.
Decisões decisões....
fonte