Flux de travail, modification de choses qui ne sont pas dans votre tâche actuelle

12

Habituellement, lorsque je programme, j'ai une tâche claire devant moi, mais je trouve des choses ennuyeuses que j'aimerais nettoyer au fur et à mesure.

Ici, je vois trois options:

  • Faites-le plus tard (peut oublier / devoir passer du temps à ajouter un billet)
  • Faites-le maintenant et engagez-le avec mon travail actuel (peu clair)
  • Faites-le maintenant et validez-le séparément (devez le trouver, cela pourrait faire une erreur et opter involontairement pour l'option # 2)

C'est probablement assez basique, mais comment contourner cela en utilisant svn / git / other?

Nattfrosten
la source
Je choisis généralement la 2e option. Mais si j'ai fait beaucoup de refactoring, je fais deux commits séparés. 1 pour ma tâche spécifique et un autre juste étiqueté comme "Refactoring" que j'ai rebaseau lieu de merge.
Alternatex

Réponses:

7

Personnellement, je pense que cela dépend :-).

  • Pour les petits correctifs , l'option trois (maintenant, dans un commit séparé) est la meilleure, car la surcharge de le faire plus tard n'en vaut pas la peine. Dans ce cas, vous créez simplement un commit séparé. Comment faire cela dépend du VCS que vous utilisez, et c'est une question distincte :-).

  • S'il s'agit d'un correctif plus important , vous créez un ticket. Sinon, vous risquez constamment de dérailler de votre tâche principale ("Oh, regardez, une autre occasion de refactoring, oh, il y en a une autre, et là, et là ...").

sleske
la source
Pour votre première puce, de petites corrections, la validation immédiate de l'édition semble être la meilleure option. Je ne sais pas pourquoi je n'y avais pas pensé, de mauvaises habitudes je suppose. J'ai tendance à entrer un peu dans la partie codage de la programmation, par opposition à la partie gestion de code :)
Nattfrosten
@Nattfrosten: Oui, c'est naturel et pas mal - après tout, l'accent devrait généralement être mis sur le codage. La gestion de code est simplement destinée à faciliter le codage.
sleske
5

Considère ceci. Lorsque vous "trouvez des choses gênantes (...) à nettoyer" et que vous prenez une décision exécutive pour le faire, vous coupez le reste de votre équipe d'une discussion et d'une décision sur les priorités. Vous laissez votre agenda l'emporter sur tout le monde en raison de votre relation privilégiée avec le code. Je ne pense pas que ce soit bien. Par expérience, cela conduit également à des ressentiments d'équipes / actionnaires.

Au lieu de cela, créez un problème / tâche pour le nettoyage / refactoring. Bien qu'il soit frais dans votre esprit, énumérez les raisons pour lesquelles il est important: des estimations de stabilité accrue, de facilité d'entretien, ce genre de chose. Peut-être inclure une estimation de l'effort en fonction du fonctionnement de votre équipe. Ensuite, lors de votre prochaine réunion de sélection / affectation / priorités de tâches, présentez votre tâche de refactoring et positionnez-la par rapport à d'autres tâches. En équipe, décidez quand elle doit être terminée.

S'il vous plaît, ne pensez pas que je vous dis de faire preuve de bon sens au nom des principes. Utilise ta tête. S'il y a quelque chose de laid dans la fonction que vous éditez, ce n'est pas une nouvelle tâche de refactoring. Corrigez-le et vérifiez tout. Si renommer la propriété avec laquelle vous travaillez en quelque chose de plus sensible affecte quelques fichiers source supplémentaires, ce n'est pas une nouvelle tâche de refactoring. Corrigez-le et vérifiez tout. Si, d'autre part, vous n'aimez pas la façon dont un autre développeur (Mitch, je déteste ce gars) a fait quelque chose dans une fonction que vous n'éditez pas et ladite fonction semble fonctionner correctement, laissez-le tranquille pour l'instant. Créez une tâche de refactoring et présentez votre cas à votre équipe.

Si la refactorisation est toujours rejetée par votre équipe en faveur de nouvelles fonctionnalités, commencez à chercher un autre emploi. Il est plus facile de trouver un emploi quand vous en avez déjà un.

Scant Roger
la source
1
Merci beaucoup pour cette réponse, jusqu'à présent, j'ai principalement été impliqué dans des projets solo, c'est donc de là que vient ma perspecive. Je devrai changer beaucoup d'habitudes pour mieux m'intégrer dans une équipe plus tard, et ce genre de chose est exactement ce dont j'avais besoin.
Nattfrosten
Même conclusion, mais ce sont souvent les patrons qui décident d'opter pour de nouvelles fonctionnalités et non de refactoring: - |
Mark Hurd