web-dev-qa-db-fra.com

Comment devraient-ils manipuler des scripts "jetables utiles"?

Vous savez comment cela se passe: il existe une petite tâche répétitive pour laquelle vous avez trouvé un moyen d'automatiser rapidement 95% du travail. Vous créez un script, exécutez-le, corrige manuellement la sortie et vous avez terminé. Bien sûr, vous ne validez pas le script, car il ne correspond pas aux exigences de la qualité de l'entreprise (il n'a pas de documentation, ni de tests).

Quelque temps plus tard, vous voyez un collègue travaillant sur une tâche similaire. Tu vas "Hey! J'ai fait un script pour ça. Laissez-moi regarder ça. [Looks] Oh, il fut stocké sur mon ordinateur portable précédent, donc je ne l'ai plus. Dommage."

Ces scripts peuvent souvent économiser beaucoup de temps et, comme leader de l'équipe, je voudrais qu'ils soient stockés dans la version de la version. Cependant, si j'impose les mêmes normes rigoureuses que le reste de la base de code à ces scripts, j'ai bien peur que la plupart des développeurs ne les empêcheront.

La seule autre option que je peux trouver est de laisser les développeurs stocker les scripts dans une partie particulière du contrôle de la version, dans lequel il n'y a pas de contrôle de qualité (beaucoup comme GitHub Gists). Le risque est que d'autres ne pourront pas utiliser le code car ils ne peuvent ni trouver ni comprendre.

Comment ce problème pourrait-il être résolu? Ou ne devrait-il pas être résolu?

8
Frank Kusters

Je ressens ta douleur. Je dirais avoir une partie distincte de votre repo est probablement la possibilité de stocker ces scripts. Cependant, cela ne résout que une partie du problème. Vous les avez maintenant stockés quelque part, mais aucun bon moyen pour vos collègues de savoir qu'ils sont là.

Dans mon expérience en tant que consultant pour une entreprise où les scripts sont abondants et écrits pour différents clients et généralement sur place, découvrez ce qui est déjà là!

Vous devriez trouver un moyen de partager ce que vous avez construit.

Dans notre société, comme nous ne sommes pas si gros, nous vérifions des choses comme des scripts dans notre repo, mais envoyez également un courrier électronique à l'échelle de la société pour informer nos collègues d'une nouvelle solution. De cette façon, au moins tout le monde sait ce qui est déjà là-bas et à qui contacter doit en avoir besoin.

3
Jonathan van de Veen

Je commencerais d'abord en disant que si vos développeurs hésitent à contribuer au code en raison de vos normes, vos normes sont trop rigoureuses ou que vous devriez améliorer l'éthique de qualité et de travail de vos développeurs. Si ce sont de petits scripts, il ne devrait pas y avoir beaucoup d'effort supplémentaire nécessaire pour mettre quelques commentaires dans. Les développeurs doivent écrire du code lisible par défaut, et s'ils ne sont pas, votre vrai problème réside dans votre dotation.

Pour répondre à votre question, vous avez quelques options:

  1. Si les scripts sont suffisamment génériques, vous pouvez les accueillir dans un référentiel séparé. Si les scripts sont très centrés sur le projet, cela peut ne pas fonctionner.
  2. Hébergez les scripts dans le même référentiel dans un répertoire de leur propre. Par exemple, à ma compagnie, nos projets ont généralement un cli/ répertoire contenant une poignée de scripts de ligne de commande, généralement destiné à exécuter un seul éteint pour initialiser les environnements, importer certaines pièces de données, etc.
  3. Cela pourrait être une mauvaise option en fonction de vos besoins, mais si vous avez une raison quelconque, vous ne pouvez pas commettre de code qui ne suivent pas expressément vos normes, et/ou que vous avez des développeurs qui ne sont pas disposés à écrire des scripts si elles Pour suivre ces normes, vous pouvez héberger les fichiers sur un lecteur partagé ou quelque chose de similaire. Cela peut ne pas être la plus grande solution si vous avez besoin de tous les avantages du contrôle de la source - mais cela peut être bénéfique dans certaines circonstances (merci Doc Brown pour cette modification)

Avec l'une des deux premières options, vous pouvez choisir d'adopter plus de normes de codage laxyse sur l'autre référentiel ou dans le répertoire.

2
user296862

Commencez à formaliser vos processus.

Vous ne donnez pas de nombreuses indices à ce que ces scripts sont utilisés, mais je suppose que vous avez diverses tâches de déploiement et de maintenance, ou des corrections de données communes qui sont remises aux développeurs à faire parce qu'elles sont celles avec suffisamment de connaissances pour réparer des choses?

Vous devriez essayer de devenir plus professionnel à ce sujet.

  • Notez sur ce que ces tâches sont et les étapes pour les compléter.
  • Publier ce document sur un site Web interne ou intranet
  • Enregistrez combien de fois la tâche est effectuée et combien de temps il faut dans un système de billetterie.
  • Automatisez les étapes manuelles avec un programme, mais ne sautez pas le contrôle de la source, le test, le support, etc. Développez un outil d'administration approprié.
  • Essayez d'utiliser un 3ème outils plutôt que de développer vos propres solutions dans la mesure du possible. Cela facilitera la tâche des nouvelles embauches

L'objectif est de rendre le processus purement une fonction Rote que quiconque peut faire en suivant le document ou en exécutant l'outil.

Ensuite, vous pouvez déplacer vos développeurs sur des fonctionnalités d'écriture pour votre produit et embaucher du personnel de soutien pour traiter des problèmes quotidiens

1
Ewan

Presque tout script peut avoir un potentiel de réutilisation d'une manière ou d'une autre. Mais ce potentiel ne sera pas apparent initialement - ce qui est exactement pourquoi il est considéré comme jetable à l'époque.

Offrez à votre équipe la solution de référentialité GITUB GIST - sans contrôle de qualité, pour encourager son utilisation et prévenir la perte de ce potentiel.

Mais aussi avoir un ou plusieurs référentiels pour des outils/utilitaires partagés, avec un contrôle de la qualité approprié en place.

Ce n'est que lorsque les scripts stockés dans ce référentiel de jeton sont référencés leur potentiel de réutilisation commence à démêler. C'est à ce moment que la réutilisation formalisée devrait lancer un coup d'œil, soit par des développeurs individuels reconnaissant ce potentiel ou par vous si les références se produisent dans un contexte d'équipe. Cela peut arriver à la toute première référence, ou peut-être à la suite des suivantes (c'est-à-dire lorsque le potentiel de réutilisation est confirmé pour être plus élevé), en fonction de la capacité, du calendrier, de la charge, etc. de l'équipe,.

Le risque est que d'autres ne pourront pas utiliser le code car ils ne peuvent ni trouver ni comprendre.

La référence elle-même prend soin du problème find. L'auteur du script et/ou de la personne qui effectue la référence pourrait être capable d'aider avec le problème understand problème. Sinon, le potentiel de réutilisation n'est pas vraiment là ou de la compréhension, le code ne ferait que partie de l'effort/coût de réutilisation formalisé.

Une fois partagé, l'effort de réutilisation formalisé devrait aller sur l'écran radar de l'équipe et le résultat devrait éventuellement atterrir dans le référentiel d'outils/utilitaires partagés. C'est à ce moment-là le (s) script de jet d'équivalent à partir duquel l'origine de la réutilisation peut être supprimée (si leur potentiel était épuisé).

1
Dan Cornilescu

Se concentrer spécifiquement sur le code mal écrit mais fonctionnel; Il existe un argument très fort pour ne pas les mettre dans un référentiel.

J'ai une collection d'extraits dans mon dossier Dropbox personnel. Il contient des choses que je trouve utiles:

  • Exemple de référentiel EF générique
  • Un simple sérialisateur/désérialiseur
  • Une petite application qui traverse deux fichiers CSV et génère un nouveau fichier CSV.

Pourtant:

  • L'exemple d'EF manque d'une unité de mise en œuvre du travail et ne contient que les options de crud les plus rudimentaires.
  • Le sérieliseur est basé sur l'ancien xmlsérializer et il est presque impossible de l'échanger pour autre chose. Il a également un problème de référence circulaire massive.
  • L'application est codée en dur à rechercher A.CSV et B.csv Dans le répertoire d'applications, et génère un code clé AB.CSV dans le même répertoire. Il n'y a pas de vérification si des fichiers existent, il n'y a pas de manipulation de nullreur.

Pendant que j'utilise toujours ces extraits régulièrement lorsque j'ai besoin de mettre en œuvre rapidement quelque chose, ils ne sont nullement réutilisables ni bien construits. Il y a de nombreuses raisons pour lesquelles cela ne peut pas être mis dans le contrôle de la version de notre société:

  • Pas auto-documentant.
  • Peu de style de codage autre que mon propre hackstyle.
  • Aucune manipulation d'erreur.
  • Tous les pièges ne sont pas évidents (par exemple, les références circulaires dans le sérialiseur)

Mais le trait le plus communément partagé de tous ces extraits:

  • Même si je devais créer une documentation, cela vous prendrait probablement plus longtemps pour le lire et la comprendre que de faire quelque chose vous-même!

Ces extraits sont bons pour moi à utiliser, car je me souviens personnellement de ce qu'ils ont été utilisés, comment les utiliser et tous les pièges que j'ai rencontrés.
[.

Les extraits ne sont qu'une extension de mon expérience en tant que développeur. Sans moi, ces extraits sont des ordures. Je n'utilise que les extraits parce que je ne suis pas capable de me souvenir d'une syntaxe de classe entière jusqu'au dernier caractère. Mais je me souviens de l'intention et des pièges, même longtemps après avoir utilisé la dernière fois l'extrait.


Pensez-y de cette façon:

Le ruban adhésif est incroyablement polyvalent, il peut résoudre de nombreux problèmes. Cependant, les choses qui ont été résolues en utilisant du ruban adhésif sont généralement considérées comme disgracieuses. Si Ikea devait inclure du ruban adhésif dans tous ses paquets plats, alors qu'il peut aider certaines personnes qui en ont besoin, cela ferait également une déclaration forte sur la confiance de l'IKEA dans la qualité des meubles qu'ils vous ont vendus.

Pour la même raison, les entreprises ne doivent pas permettre des extraits de hacky dans leur contrôle de version, car il appelle la qualité du produit global en question.

0
Flater