Je suis dans une situation où je peux utiliser un plugin JavaScript open source pour remplir une tâche. Mais quand j'ai essayé de l'utiliser, je me suis retrouvé à refondre beaucoup de choses que j'avais déjà faites, et cela ajoute une certaine complexité, à mon humble avis, au projet. Alors que je peux accomplir la même tâche avec un code propre, je peux me fabriquer moi-même et sans avoir besoin de changer ce que j'ai fait jusqu'à présent.
De toute façon, devriez-vous opter pour une bibliothèque dans cette situation (par exemple, pour des codes de meilleure qualité?)
code-quality
libraries
Billal Begueradj
la source
la source
Réponses:
En tant qu’ingénieur, il convient peut-être de considérer cela comme un problème d’optimisation. Naturellement, nous devons avoir un objectif d' optimisation . Une solution courante dans ce type de situation serait de minimiser le coût total de possession .
Si vous pensez que l'ajout du composant tiers réduira les coûts à long terme, vous devriez l'utiliser. Si vous ne le faites pas, vous ne devriez pas. Assurez-vous de prendre en compte le coût de la maintenance en cours (par exemple, lorsqu'une nouvelle version de O / S est publiée, qu'un défaut de sécurité est détecté ou qu'une nouvelle spécification W3C est publiée).
Pour développer de nombreux problèmes triviaux, il vous en coûtera moins cher de développer vos propres problèmes, mais pour les problèmes moyennement complexes ne relevant pas des compétences de base de votre entreprise, il sera souvent judicieux de faire appel à une tierce partie.
Il y a aussi d'autres objectifs à prendre en compte (par exemple, le risque), mais le coût total de possession est le principal.
la source
Bill Gates a dit un jour:
Cette citation me vient à l’esprit car on pourrait en dire autant du nombre de bibliothèques. En règle générale, je n'utilise pas de bibliothèques à moins que:
Idéalement, les trois conditions sont remplies, mais je me contenterais de deux. En bout de ligne, vous ne devriez pas ajouter de bibliothèque à votre programme si cela ne sert à rien. Si vous devez demander quel est cet objectif, vous ne devriez probablement pas l'ajouter à votre programme. La qualité du code de votre programme en profite donc, car elle appelle élégamment chaque bibliothèque sans être alourdie par le besoin de réécrire nécessairement les bibliothèques dans votre programme.
Bonne chance!
la source
(Remarque: la question initiale était: le nombre de bibliothèques améliore-t-il la qualité du code?)
Vous pouvez probablement répondre à cette question par vous-même: Non, bien sûr, le simple fait d'utiliser des bibliothèques n'améliore pas votre code. Si c'était le cas, il serait facile d'écrire du bon code pour tout, sans effort.
Ce que les gens veulent dire quand ils recommandent de réutiliser plutôt que de rouler vous-même, c'est que le code dans une bibliothèque bien connue est probablement plus correct, efficace et / ou utilisable que ce que vous imagineriez vous-même, tout simplement parce que les auteurs ont passé beaucoup plus de temps sur un domaine de fonctionnalité particulier que vous (avec votre échéance pour l’ensemble du projet) pouvez vous permettre.
Mais ce n'est qu'une tendance, pas une loi. Il est certain que certaines bibliothèques ne sont pas aussi utiles à utiliser que le ferait soi-même. Cela se produit souvent lorsque la bibliothèque fait bien plus que ce dont vous avez besoin et d’une manière qui vous obligerait à adapter votre propre base de code à leurs conventions beaucoup plus qu’il n’est raisonnable. Il semble que c'est exactement ce que vous avez trouvé dans cet exemple.
la source
L'utilisation des bonnes bibliothèques peut vous faire économiser beaucoup de travail, mais il y a aussi beaucoup de coûts cachés:
Par conséquent, avant d’ajouter une autre dépendance à votre projet, vous pouvez également inclure, par exemple, une analyse coûts / avantages.
la source
Cela ne doit pas nécessairement être une décision binaire: utilisez uniquement une bibliothèque OSS ou programmez une nouvelle solution à partir de zéro. Une autre option peut être de réutiliser des parties de la bibliothèque, si la licence le permet.
Par exemple, dans mon domaine (logiciel numérique), une bibliothèque peut contenir des modules de base fins et certains modules spécialisés qui ne me satisfont qu'à 80%. J'utiliserais donc les modules principaux et rédigerais un wrapper pour les modules spécialisés. Ou je peux développer mes propres modules spécialisés en utilisant la conception et le code des modules OSS. Les bits algorithmiques les plus difficiles sont généralement réutilisés à partir de ceux-ci, avec uniquement le code d'échafaudage modifié. Je peux aussi nettoyer une partie du code original. Cela s'est avéré une bonne expérience d'apprentissage et un gain de temps comparé au développement à partir de zéro.
la source
Si quelqu'un a déjà fait le travail pour vous, vous devriez bien sûr l'utiliser.
L'exception à la règle est javascript. Où ils auront importé une douzaine d’autres bibliothèques (versions obsolètes bien sûr) pour ajouter les fonctionnalités de langage qu’ils souhaitent utiliser, puis ont effectué le travail pour vous.
Choisissez votre cadre et restez dedans. Si la bibliothèque fonctionne avec votre framework ou votre js simple, c'est bien. Mais si cela nécessite un cadre différent, cherchez une autre option.
la source
Les bibliothèques et quand les utiliser est une décision compliquée.
D’une part, vous avez bien testé des méthodes presque standard (dans mon domaine, par exemple, FFTW entre dans cette catégorie, ou quelque chose comme libsndfile), qui sont généralement reconnues pour fonctionner et qui sont des méthodes standard depuis 20 ans. tout le monde utilise.
D'autre part, vous avez des éléments aléatoires de github, sans suite de tests et avec à peu près un seul responsable, généralement pourquoi s'embêter?
Le test acide pour moi est d’abord que la bibliothèque s’intègre à mon architecture (parfois, si vous savez utiliser une bibliothèque donnée, vous finissez par concevoir autour de cela), et je pense que je vais finir par déboguer le code de la bibliothèque d’elses ? Un bon proxy pour la deuxième question est "Existe-t-il une suite de tests automatisés et à quoi ressemble la documentation?".
Un petit débogage n’est pas un problème majeur, mais à ce stade, le code de la bibliothèque commence à compter dans la taille de mon code du point de vue de la maintenance (d’autant plus si mes correctifs ne peuvent pas être poussés en amont pour une raison quelconque).
Je ferais également la différence entre les bibliothèques et les frameworks, même si la distinction n’est parfois pas si claire, les frameworks de mon monde (petit noyau, DSP lourd) tendent à être un vrai casse-tête, surtout si vous essayez de fusionner plus que un ou faire quelque chose légèrement en dehors des lignes, les bibliothèques sont parfois utiles. Je suis conscient que cela se voit très différemment sur la scène de développement web.
En fin de journée, il s’agit d’une décision qui relève du goût et de l’expérience. Même les personnes expérimentées choisissent parfois mal, mais au moins avec une bibliothèque, vous pouvez toujours la déchirer et écrire votre propre implémentation si cela devient trop ennuyeux.
Ah, prendre des décisions....
la source