Comment gérer la philosophie de réutilisation du code?

10

Je me retrouve constamment à penser à la réutilisation du code lors du démarrage d'un nouveau projet.

Dans quelle mesure dois-je rendre mon code réutilisable?
Dois-je le limiter à la portée de l'application ou dois-je le rendre réutilisable en dehors du projet?

Parfois, j'ai l'impression que la réutilisabilité du code peut faire obstacle à une conception simple. Veuillez partager votre propre compréhension et approche de la réutilisation du code.

Lamin Sanneh
la source

Réponses:

21

Le code doit fonctionner avant de pouvoir être réutilisé. Cela implique donc que la conception et la fonction (principale) doivent venir avant d'envisager la réutilisation du code.

Il est bon de penser à la réutilisation et à la réutilisation des composants que vous avez déjà écrits. Mais cela peut parfois être tout aussi rapide, sinon plus rapide, juste pour écrire le code et le faire fonctionner. Après avoir résolu le problème d'origine, vous pouvez refactoriser le code pour le rendre plus réutilisable.


la source
2
Le "était" dans la première phrase une faute de frappe "a"?
@delnan - qu'est-ce que c'était? :-) Merci d'avoir attrapé ça.
9

N'oubliez pas le KISS et le YAGNI:

Code re-usability better to be consideredune fois que vous avez votre document de conception prêt . Cela vous permettra de voir la section / les parties de code qui vont être potentiellement dupliquées.

Ainsi, lorsque vous n'avez pas de conception claire, appliquez l' approche KISS et YAGNI dans votre travail!

Yusubov
la source
1

Cela vient de mon expérience, mais je crois toujours que cela peut être appliqué et va dans le sens de ce que GlenH7 a mentionné.

Je travaille entre 3 entreprises réalisant divers projets. Les entreprises sont sœurs les unes des autres avec certaines pratiques et méthodes de travail standard, mais elles sont également uniques à bien des égards. Cela dit, je commence généralement chaque projet à neuf et je veux simplement le faire ou montrer les progrès. Ensuite, si je rencontre un scénario dans lequel je me souviens d'un morceau de code ou d'une fonctionnalité que j'ai écrit pour un projet précédent, je ferai l'une des deux choses (en fonction du temps):

  1. Méthode la plus rapide
    Copiez le code précédent de l'autre projet (ne disposez pas de beaucoup de temps) dans mon projet actuel.
  2. Deuxième méthode la plus rapide
    Copiez le code précédent et placez-le dans une bibliothèque commune, puis incluez cette bibliothèque dans le projet en cours (pour faciliter la progression).

    2b. Si j'apporte des modifications à l'autre projet (original), je le refactoriserai pour utiliser la nouvelle bibliothèque [mais généralement je ne le ferai pas à moins que je doive retoucher ce projet].

Soyez averti, testez le diable des bibliothèques communes. Les bibliothèques communes signifient la création de dépendances. Les dépendances créent des points de défaillance. Bien que vous ayez besoin de quelque chose de légèrement modifié pour votre implémentation actuelle, vous ne savez pas comment cela changera quoi que ce soit d'autre en utilisant cette bibliothèque.

Brad Christie
la source
Pourquoi utiliser une seule implémentation de quelque chose alors que vous pouvez en avoir quatre ou cinq identiques? Votre méthode "la plus rapide" n'est plus rapide qu'à très court terme.
Caleb
@Caleb: D'accord. Je n'ai jamais dit que c'était élégant juste que les délais sont des délais. Lors d'un refactor, je reconnais plusieurs projets utilisant le même code et je les passe en revue et les répartit dans leurs propres bibliothèques. Mais quand j'ai besoin de le sortir, le copier-coller fonctionne. Cela me donne également la flexibilité d'apporter des modifications à ce projet et je garde ces changements à l'esprit lorsque je lance la bibliothèque et que je veux la rendre solide et flexible.
Brad Christie
1

Parfois, je trouve que copier et coller quelques lignes de code est une meilleure solution. Même en langage humain, lorsque vous voulez dire une phrase que vous avez déjà prononcée juste avec une légère variation, vous la répéterez avec la variation, car cela fait moins de mal à personne.

Cependant, si votre grand module doit être utilisé d'une manière légèrement différente qu'il ne prend pas en charge, ne le clonez pas juste pour modifier quelques lignes car il est très probable que vous souhaitiez étendre les fonctionnalités que la base et le part de clone à l'avenir. Au lieu de cela, rendez-le simplement configurable ou exportez la fonctionnalité que la base et le clone partagent dans un autre module qu'ils utiliseront tous les deux.

Moshe Revah
la source
0

N'en faites pas trop. Et si vous n'êtes pas sûr, respectez la portée de l'application jusqu'à ce que vous ayez écrit suffisamment de projets pour voir où vous pouvez réutiliser quoi.

SuperUser
la source