Question

Il y a quelques années, nous avons besoin d'un C ++ de bibliothèque IPC pour la fonction faire des appels sur TCP. Nous avons choisi une et l'avons utilisé dans notre application. Après un certain temps, il est devenu évident qu'il n'a pas fourni toutes les fonctionnalités dont nous avions besoin. Dans la prochaine version de notre logiciel, nous avons jeté le tiers bibliothèque IPC et remplacé par celui que nous nous écrivions . A partir de là, je doute parfois si ce fut une bonne décision, car il est avéré être tout à fait beaucoup de travail et je me sentais évidemment comme réinventer la roue . Donc, ma question est: y at-il des inconvénients à la réutilisation du code qui justifient cette réinvention?

Était-ce utile?

La solution

Le plus grand inconvénient (vous le dites vous-même) en réutilisant les bibliothèques de tiers, est que vous êtes fortement Couplé et dépendent de la façon que fonctionne la bibliothèque et la façon dont il est censé être utilisé, sauf si vous parvenez à créer une couche d'interface moyenne qui peut prendre soin.

Mais il est difficile de créer une interface générique, étant donné que le remplacement d'une bibliothèque existante par un autre, plus ou moins exige que la nouvelle fonctionnalité fonctionne de façon similaire. Cependant, vous pouvez toujours réécrire le code en utilisant, mais cela peut être très difficile et prendre beaucoup de temps.

Un autre aspect est que si vous réinventer la roue, vous avez le contrôle total sur ce qui se passe et vous pouvez faire des modifications comme bon vous semble. Cela peut être tout à fait impossible si vous dépendez d'une bibliothèque tierce partie étant en vie et vous offrir en permanence des mises à jour et corrections de bugs. D'autre part, le code la réutilisation de cette façon vous permet de se concentrer sur d'autres choses dans votre logiciel, ce qui pourrait parfois être la chose à faire.

Il y a toujours un compromis.

Autres conseils

Je peux suggérer quelques

  1. Les bugs sont reproduits - Si vous réutilisez un code bogué:)

  2. Parfois, il peut ajouter une charge supplémentaire. À titre d'exemple, si vous avez juste besoin de faire une chose simple, il est déconseillé d'utiliser une bibliothèque complexe BIG qui implémente la fonctionnalité requise.

  3. Vous pourriez faire face à des problèmes de licence.

  4. Vous devrez peut-être passer un peu de temps pour apprendre \ configurer la bibliothèque externe. Cela peut ne pas être efficace si le redéveloppement prend un temps beaucoup plus faible.

  5. Réutiliser une bibliothèque mal documentée peut obtenir plus de temps que prévu / estimé

P.S. Les raisons d'écrire notre propre bibliothèque sont les suivants:

  • L'évaluation des bibliothèques externes est souvent très difficile et il faut beaucoup de temps. En outre, certains problèmes ne deviennent visibles après une évaluation approfondie.
  • Il a permis d'introduire des fonctionnalités spécifiques pour notre projet.
  • Il est plus facile de faire l'entretien et l'écriture d'extensions, comme vous le savez la bibliothèque en part.

Il est à peu près toujours au cas par cas. Vous devez regarder la pertinence et la qualité de ce que vous essayez de les réutiliser.

Le problème numéro un est: vous ne pouvez réutiliser le code avec succès si ce code est bon code. S'il a été conçu mal, a des bugs, ou est très fragile alors vous allez rencontrer les mêmes problèmes que vous avez déjà couriez en -. Vous devez aller faire vous-même de toute façon, car il est si difficile de modifier le code existant

Cependant, si elle est un tiers bibliothèque que vous envisagez d'utiliser que vous ne disposez pas du code source, il est un peu différent. Vous pouvez essayer d'obtenir la source si elle est ce genre de bibliothèque. Certains fournisseurs de bibliothèques commerciales sont ouvertes aux suggestions et demandes de fonctionnalités.

La Sagesse d'Or :: Il doit être utilisable avant d'être réutilisable.

Si votre code repose sur des ressources externes et ceux qui vont plus loin, vous pouvez être des parties invalidantes de nombreuses applications.

Puisque le code réutilisé provient de l'Internet, vous courez dans tous les problèmes avec le salle de bains mur du code parle Atwood sur. Vous pouvez rencontrer des problèmes avec le code emprunté non sécurisé ou peu fiables, et plus il est noir boxed, le pire.

Inconvénients de la réutilisation du code:

  • Debugging prend beaucoup plus longtemps car il est pas votre code et il est probable que son code un peu pléthorique.
  • Toutes les exigences spécifiques aussi plus de travail puisque vous êtes limité par le code que vous réutilisez et doivent contourner ses limitations.
  • réutilisation du code constant entraînera à long terme dans une applications pléthorique et désorganisé difficile à chasser les insectes -. Enfer programmation
  • Code Réutiliser peut (dépendamment le cas) réduire le défi et le facteur de satisfaction pour le programmeur, et perdre aussi l'occasion de développer de nouvelles compétences.

Cela dépend du cas, la langue et le code que vous voulez réutiliser ou re-écriture. En général, je crois que le plus haut niveau de la langue est, plus je tends vers la réutilisation du code. Bugs dans la langue de niveau supérieur peuvent avoir un impact plus important, et ils sont plus faciles à réécrire. Code de haut niveau doit rester lisible, propre et flexible. Bien sûr que l'on puisse dire de tout le code, mais, en quelque sorte, la réécriture d'une bibliothèque C semble moins d'une bonne idée que de réécrire (ou plutôt refactoring) le code du modèle PHP.

De toute façon, ce sont quelques-uns des arguments que je voudrais utiliser pour promouvoir « réinventer la roue ».

Parfois, il est juste plus rapide, plus amusant, et mieux à long terme de réécrire à partir de zéro que d'avoir à contourner les bugs et la limitation d'un code de base.

Vous vous demandez ce que vous utilisez pour garder cette bibliothèque vous réinventé?

  1. Temps initial pour créer un code réutilisable est plus cher et le coût du temps
  2. Lorsque la branche principale dispose d'une mise à jour vous devez synchroniser et de nouveau déployer
  3. Les bugs sont reproduits - Si vous réutilisez un code buggy
  4. Réutiliser un code mal documenté peut obtenir plus de temps que prévu / estimé
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top