web-dev-qa-db-fra.com

Comment gardez-vous une trace de ce que les classes et les fonctions ont écrit votre équipe?

Lorsque vous travaillez sur le code, je fais face à de nombreux défis que mes coéquipiers le font et j'ai écrit des fonctions et des classes utiles, et ils ont donc. S'il y a une bonne communication, j'entendrai une bonne chose que quelqu'un a réunis et six mois plus tard, quand j'en ai besoin, je me souviens peut-être de cela et d'appeler cette fonction, sauvant moi-même. Si je ne me souviens pas de cela, ou je ne l'ai jamais connu, je vais probablement réinventer la roue.

Existe-t-il une pratique particulière de documenter ce genre de choses? Comment les rendez-vous faciles à trouver?

Si votre équipe n'a pas de telle documentation, comment trouvez-vous si votre roue existe déjà?

Edit :

Tout sauf une des réponses jusqu'à présent traite d'une situation idéale, alors laissez-moi résumer ces solutions: documentation et communication; Les wikis, les réunions de stand-up, etc. Ce sont toutes de grandes choses, mais elles s'appuient sur les programmeurs ayant le temps (et les compétences) d'écrire la documentation et de suivre les réunions et de prendre des notes et de se souvenir de tout.

La réponse la plus populaire jusqu'à présent (Caleb) est la seule qui pourrait être utilisée par un programmeur incapable de documenter et de réunions, et ne fait qu'une chose: la programmation. La programmation est ce qu'un programmeur fait, et oui, un excellent programmeur peut rédiger une documentation, des tests unitaires, etc., mais faites-la face à celle-ci - la plupart d'entre nous préfèrent la programmation à la documentation. Sa solution est une solution où le programmateur reconnaît le code réutilisable et la retire de sa propre classe ou de son référentiel ou autre, et par le fait qu'il est isolé Il devient trouvé et facilite la courbe d'apprentissage pour l'utiliser ... et cela a été accompli par programmation.

D'une certaine manière, je le vois comme ceci: je viens de écraser trois fonctions, et cela me survient que quelqu'un d'autre devrait savoir à leur sujet. Je pourrais les documenter, écrivez-les, annoncez-les lors d'une réunion, etc. - que je peux faire, mais ce n'est pas ma force - ni ... Je peux les extraire à une classe, nommez-le bien, les faire fonctionner comme une boîte noire et collez-la d'où aller d'autres fichiers de classe. Ensuite, un court email annonçant c'est facile. D'autres développeurs peuvent analyser le code et le comprendre mieux que leur fonction isolée utilisée dans le code qu'ils ne comprennent pas complètement - ce contexte est supprimé.

J'aime cela parce que cela signifie avoir un ensemble de fichiers de classe bien nommés, avec des méthodes bien nommées, est une bonne solution qui est accomplie par une bonne programmation. Il ne nécessite pas de réunions et adoucit le besoin de documentation détaillée.

Y a-t-il plus d'idées dans cette veine ... pour les développeurs isolés et pressés dans le temps?

43
changokun

bibliothèques. Cadres. Contrôle de la version.

Si vous avez un code réutilisable, la toute dernière chose que vous souhaitez est que les différents membres de l'équipe copient le code source dans leur projet. S'ils le font, il y a de fortes chances qu'ils vont changer un peu ici et modifier un peu là-bas, et vous avez bientôt des dizaines de fonctions ou de méthodes qui ont tous le même nom mais que chacun fonctionne un peu différemment. Ou peut-être plus probable que l'auteur d'origine continuera à affiner le code pour fixer des bugs, de le rendre plus efficace ou d'ajouter des fonctionnalités, mais le code copié ne sera jamais mis à jour. Le nom technique pour cela est n énorme désordre de Freakin '.

La bonne solution consiste à tirer cette forme réutilisable de tout projet que vous avez construit en premier lieu et à le mettre dans une bibliothèque ou un cadre dans son propre référentiel de contrôle de version. Cela facilite la recherche, mais décourage également de faire des changements sans considération pour tous les autres projets qui pourraient l'utiliser. Vous pouvez envisager d'avoir plusieurs bibliothèques différentes: une pour un code bien testé qui n'est plus susceptible de changer, une pour des trucs qui semble stable mais qui n'a pas été minutieusement testé et examiné, une pour les ajouts proposés.

29
Caleb

Une approche pour cela est la mise en place d'un wiki à cette fin et écrit des documents de haut niveau sur les composants réutilisables que vous avez, comment vous avez résolu un problème, etc.

La partie difficile est d'obtenir tout le monde dans votre équipe pour maintenir constamment ce wiki. Mais tout autre type de documentation souffre du même problème.

Certains de votre code peuvent également être suffisamment bons pour être mis dans une bibliothèque réutilisable. Cela facilite également la recherche du code plus tard.

13
Doc Brown

Être dans une entreprise avec 700 employés, dans les équipes variant entre 2 et 20 personnes, voici mon expérience.

Sur le niveau de l'équipe

Nous avons des "réunions de texte" tous les jours pendant environ 15-20 minutes. Nous pouvons rapidement partager des connaissances communes comme "J'ai fait cette fonction hier, elle bascule si dure".

Nous avons également un wiki par projet. Ce qui signifie que nous pouvons partager des informations (techniques) sur ce qui est fait dans le projet, y compris des classes/fonctions personnalisées intégrées.

Sur le niveau de l'agence

Sur le niveau de l'agence, nous avons 4 outils:

  • Un autre wiki. Il est principalement là pour nous fournir des informations sur le matériel et les choses, mais nous l'utilisons parfois pour partager des informations techniques à examiner avant de la mettre au niveau de la société.
  • Réunions hebdomadaires. Ils doivent surtout connaître les progrès de chaque équipe/projet, mais comme nous sommes surtout des passionnés de technologie, nous pouvons élever des trucs cool.
  • Liste de diffusion. Nous avons un mailing avec tout le monde dans l'agence. Beaucoup de choses fraîches/de choses amusantes/des choses utiles qui y passent.
  • Référentiel VCS. Chaque agence a son référentiel personnel où nous avons de petits projets, principalement des modules que nous utilisons dans différents projets.

Au niveau de l'entreprise

Au niveau de l'entreprise, il est plus organisé.

Le "niveau d'agence" Wiki fait partie du wiki de la société.

Et le wiki est ensuite divisé en fonction des technologies. Ainsi, tout le monde peut l'améliorer, effectuer une recherche à travers elle et donner une vie au wiki.

Il existe également des listes de diffusion disponibles auxquelles nous pouvons vous abonner. Toute personne dans l'agence peut souscrire, et la plupart des gens suivent au moins une ou deux technologies, la plupart des gens suivent en fait 5 à 10.

Et le VCS est bien sûr le meilleur système de partage de code.

Conclusion

Pour résumer, il n'y a pas de solution de coupe claire. Le partage des connaissances a toujours été un gros problème et restera probablement. Il y a beaucoup de solutions à créer Bases de connaissances , et on pourrait probablement correspondre à votre facture. Cependant, certaines personnes essayons d'obtenir encore mieux KB car les solutions actuelles ne sont pas toujours très intelligentes.

7
Florian Margaine

Eh bien, tout tombe à la communication.

Les wiki sont super et vous devriez définitivement installer et utiliser un. Un bon intranet de programmeurs internes est bon si les gens le lisent et la mettent à jour, alors vous parlez de problème de personnes là-bas. Vous pouvez suggérer des réunions hebdomadaires de "mise à jour de l'équipe" où tout le monde se réunit et donne un aperçu de ce que le travail se passe. La technologie dirige (au moins!) Devrait se réunir et discuter de ce que chaque équipe fait. Les sessions informelles "Brown Sac" sont excellentes, planifiez-les à l'heure du déjeuner et demandez aux gens de parler.

Vous avez également besoin d'un moyen de partager le code, de l'emballer, de la désigner et de la distribuer. Les choses seraient plus faciles si vous avez un référentiel de code source vraiment bien géré, disposé bien de dossiers "communs" et de projets.

Si rien de tel que ceci est fait, mettez-le avec votre patron, expliquez comment cela profitera à la société et suggère une voie à suivre :)

6
Rocklan

Les sessions de revue de code peuvent aider. Si votre équipe se réunit régulièrement pour discuter de ce qui a été développé, la personne qui a proposé une solution peut montrer aux autres comment l'utiliser. Si quelqu'un soulève un point, ils s'enclennent, d'autres membres de l'équipe pourraient proposer une approche qui augmente la réutilisation des composants existants.

4
Daenyth

La meilleure façon de gérer quelque chose comme ça est d'avoir une structure de référentiel qui possède des conventions simples afin que je sache, en tant que programmeur, s'il existe une fonction doXYZ, à peu près où je devrais rechercher cette fonction. Que vous utilisiez des espaces de noms, des répertoires, des modules, des plugins, des packages, quels que soient votre code, votre code doit être modulaire de sorte que les fonctions qui font la même chose ou que les mêmes sources de données sont principalement au même endroit.

2
Jonathan Rich

Idéalement, il devrait y avoir au moins une autre personne à part l'auteur faisant une critique de code sur chaque checkin. Le processus d'examen du code peut aider à atténuer le problème de nombreuses méthodes en double. Bien sûr, vous êtes limité par la connaissance des examinateurs.

TL; DR: CODE Reviews pour chaque checkin.

0
Carolyn