Ma règle d'or est que lorsque je dois faire quelque chose pour la troisième fois, il est temps soit d'écrire un petit script pour l'automatiser, soit de repenser mon approche.
Je ne fais pas un "outil" à part entière à ce stade, juste un petit script (généralement bash ou python; perl fonctionnerait aussi, ou même PHP) qui automatise ce que j'ai fait manuellement auparavant. Il s'agit essentiellement d'une application du principe DRY (ou du principe Single Source Of Truth, qui est essentiellement la même chose) - si vous devez modifier deux fichiers source en tandem, il doit y avoir une vérité commune qu'ils partagent, et que la vérité doit être factorisée et stockée en un seul endroit central. C'est génial si vous pouvez résoudre ce problème en interne en refactorisant, mais parfois, ce n'est pas possible, et c'est là que les scripts personnalisés entrent en jeu.
Plus tard, le script peut évoluer ou non en un outil complet, mais je commence généralement par un script très spécifique avec beaucoup de choses codées en dur.
Je déteste le travail de grognement avec passion, mais je crois aussi fermement que c'est un signe de conception mauvaise ou incorrecte. Être paresseux est une qualité importante dans un programmeur, et il vaut mieux être le genre où vous passez beaucoup de temps pour éviter le travail répétitif.
Bien sûr, parfois l'équilibre est négatif - vous passez trois heures à refactoriser votre code ou à écrire un script pour vous faire économiser une heure de travail répétitif; mais généralement, l'équilibre est positif, d'autant plus si vous considérez des coûts qui ne sont pas directement apparents: défaillance humaine (les humains sont vraiment mauvais pour le travail répétitif), base de code plus petite, meilleure maintenabilité en raison de la redondance réduite, meilleure auto-documentation, avenir plus rapide développement, code plus propre. Donc, même si le solde semble négatif en ce moment, la base de code augmentera davantage et cet outil que vous avez écrit pour générer des formulaires Web pour trois objets de données fonctionnera toujours lorsque vous aurez trente objets de données. D'après mon expérience, l'équilibre est généralement estimé en faveur du travail de grognement, probablement parce que les tâches répétitives sont plus faciles à estimer et donc sous-estimées, tandis que le refactoring, l'automatisation et l'abrégé sont perçus comme moins prévisibles et plus dangereux, et donc surestimés. Il s'avère généralement que l'automatisation n'est pas si difficile après tout.
Et puis il y a le risque de le faire trop tard: il est facile de refaçonner trois nouvelles classes d'objets de données en forme et d'écrire un script qui génère des formulaires Web pour elles, et une fois que vous avez fait cela, il est facile d'ajouter 27 classes supplémentaires qui travaillez également avec votre script. Mais il est presque impossible d'écrire ce script lorsque vous avez atteint un point où il existe 30 classes d'objets de données, chacune avec des formulaires Web écrits à la main, et sans aucune cohérence entre eux (aka "croissance organique"). Le maintien de ces 30 classes avec leurs formulaires est un cauchemar de codage répétitif et de recherche-remplacement semi-manuel, changer les aspects communs prend trente fois plus de temps qu'il le devrait, mais écrire un script pour résoudre le problème, qui aurait été une pause déjeuner sans encombre lorsque le projet a commencé est maintenant un projet effrayant de deux semaines avec la perspective redoutable d'un mois de suite consistant à corriger des bugs, éduquer les utilisateurs, et peut-être même abandonner et revenir à la ancienne base de code. Ironiquement, l'écriture du désordre de 30 classes a pris beaucoup plus de temps que la solution propre, car vous auriez pu utiliser le script pratique pendant tout ce temps. D'après mon expérience, l'automatisation du travail répétitif trop tard est l'un des problèmes majeurs des grands projets logiciels de longue durée. parce que vous auriez pu utiliser le script pratique pendant tout ce temps. D'après mon expérience, l'automatisation du travail répétitif trop tard est l'un des problèmes majeurs des grands projets logiciels de longue durée. parce que vous auriez pu utiliser le script pratique pendant tout ce temps. D'après mon expérience, l'automatisation du travail répétitif trop tard est l'un des problèmes majeurs des grands projets logiciels de longue durée.