Devez-vous corriger des défauts préexistants tout en travaillant sur autre chose?

15

Énigme: au cours du travail sur une nouvelle fonctionnalité ou de la correction d'un défaut, vous trouvez un problème hérité dans le code. Que devrais tu faire? Corrigez-le et risquez de modifier le comportement du code. Il a fonctionné jusqu'à présent par un coup de chance, ou bien le défaut n'a pas été détecté ou mérite le temps de quiconque de le signaler. Devriez-vous le laisser seul et permettre au problème de rendre le code plus difficile à travailler plus tard? La résolution du problème ne fera qu'ajouter au temps de votre tâche d'origine et vous forcera à effectuer un test de régression. Peu apprécieront le travail. Le corriger, cependant, semble en quelque sorte juste. Le code avec moins de problèmes est plus facile à refactoriser et à développer.

Je me suis retrouvé dans cette situation à maintes reprises alors que nous travaillons à moderniser une application Web. Je ne peux pas dire si je suis obsessionnel ou honorable quand je vais travailler de manière tangente sur ces vieux bugs. Comment gérez-vous ces situations?

Merci, Corey

Corey
la source

Réponses:

10

Je travaille dans une très petite équipe, donc cela dépend en quelque sorte du changement:

Si c'est une petite correction de bogue évidente, j'y vais définitivement. Je lance également des commentaires supplémentaires si je dois travailler avec le code de quelqu'un d'autre et d'autres petites améliorations qui relèvent de la "règle de boyscout" pour moi.

Si le code est tellement imbriqué que vous devez vous demander "Est-ce que changer cela cassera quelque chose et nécessitera des tests" alors non, vous ne devriez pas le changer. Apportez-le dans votre système de suivi des bogues si cela vous inquiète.

C'est d'ailleurs pour cette raison que j'essaie de coder des méthodes plus petites avec des signatures de type plus évidentes également. Si vous savez qu'il n'y a pas d'effets secondaires et pouvez faire correspondre les tenants et les aboutissants, vous pouvez corriger, réorganiser ou modifier tout code intérieur sans risque.

Mais ne pensez pas que le manque d'appréciation est une raison pour ne pas corriger les bugs que vous trouvez ou pour améliorer la base de code pour une raison quelconque. Si rien d'autre, vous êtes bon pour l'avenir, vous qui serez assurément de retour pour réparer autre chose.

EDIT: Vous devez également surveiller votre temps sur le projet. Évidemment, dans des délais serrés, vous devez vous concentrer sur la réalisation du travail principal, mais si vous êtes juste sous une «charge normale», je pense qu'un petit nettoyage ici et là rend tout le monde plus heureux à long terme.

CodexArcanum
la source
+1 pour avoir mentionné la règle du boy-scout "Laissez le terrain de camping plus propre que vous ne l'avez trouvé."
Martin Wickman
8

Comme toujours, cela dépend.

  • Si c'est trivial et que vous êtes sûr de pouvoir le réparer, corrigez-le.
  • S'il y a beaucoup de tests unitaires, vous pouvez donc être sûr que vous n'avez rien cassé, corrigez-le.
  • Sinon, ajoutez un // TODO, ajoutez-le à votre suivi de bogue, quel que soit

Fondamentalement, vous faites une évaluation des risques: quel est le risque de changer par rapport à ne pas changer. Si vous n'avez pas l'impression d'avoir suffisamment d'expérience (avec la programmation en général, ou le système en particulier), demandez à quelqu'un d'autre dans l'équipe.

Ben Hughes
la source
5

Le programmeur pragmatique appelle ces «fenêtres brisées».

Si vous ne corrigez pas les fenêtres cassées, elles ont tendance à créer une spirale descendante de la qualité du code. Et plus ils sont nombreux, plus il est difficile de les réparer, et il est donc moins probable qu'ils soient réparés.

Que ce soit pour les réparer maintenant ou plus tard, c'est à vous de juger. Est-ce une solution simple? Êtes-vous sûr que le code fait ce que vous pensez qu'il est? Est-il susceptible de vous distraire de votre tâche actuelle? Êtes-vous soumis à des contraintes de temps? Est-il susceptible d'introduire plus de bugs?

À tout le moins, marquez l'article dans votre système de suivi et assurez-vous qu'il soit corrigé plus tard. Il est important de le marquer dans le système de suivi même si vous décidez de le corriger maintenant, de vous assurer qu'il est également testé et de documenter les modifications.

Dominique McDonnell
la source
0

S'il s'agit d'un bogue évident, tel que quelque chose qui va violer la sécurité, corrompre des données ou déclencher une exception qui s'affiche pour l'utilisateur, corrigez-le. Sinon, demandez à quelqu'un qui connaît mieux la base de code que vous.

Mason Wheeler
la source
Semble raisonnable. Qu'en est-il de quelque chose qui semble mineur, comme du HTML mal formé qu'un rendu de navigateur en mode Quirks tolère? Le bogue, dans ce cas, fait peu de mal, mais je sais que cela rendra la vie plus difficile si un nouveau contenu / plugin nécessite que la page soit rendue en mode conforme aux normes.
Corey
@ Corey: Oui, c'est le genre de chose sur laquelle vous voudriez consulter un développeur plus expérimenté. Vous avez une opinion, et je suis d'accord que c'est probablement la bonne décision, alors présentez votre cas, mais gardez à l'esprit qu'il pourrait y avoir d'autres facteurs que vous ne connaissez pas que le gars qui travaille sur ce dossier depuis 5 ans comprend.
Mason Wheeler
0

Cela dépend, si c'est un petit bug où vous êtes certain que votre correctif a un faible impact, alors personnellement, je le corrigerais dans le cadre des autres travaux, puis je le ferais savoir au PM.

Si cela présente un risque pour le client, les utilisateurs ou l'entreprise, discutez-en avec le chef de projet et discutez d'un cours à suivre. Il leur incombe d'évaluer le risque, alors portez-le à leur attention et justifiez-le. Honorez ensuite leur décision.

Thomas James
la source
0

Nos testeurs détestent ça. À moins qu'il ne soit très trivial, nous l'enregistrons dans la base de données de bogues, puis nous l'allouons à une version et écrivons des tests de régression. Si les développeurs vont simplement apporter des modifications qui ne sont pas dans les délais, comment pouvez-vous jamais respecter une date limite?

Craig
la source
Parfois, faire une petite correction de bogue ne prend pas vraiment plus de temps que de l'ignorer, et est plus efficace que de la corriger plus tard.
David Thornley
C'est pourquoi j'ai dit à moins que ce soit trivial. Mais tout ce qui va prendre plus de 15 minutes, je pense, devrait être enregistré.
Craig
0

J'ai fait partie d'équipes où des défauts non critiques ou des violations de normes sont soumis en tant que défaut "Code faible". Je dirais que la personne qui trouve un défaut critique a la responsabilité de lancer une sorte de drapeau

Tim Claason
la source
0

cela dépend du bug. la principale préoccupation est l'introduction de nouveaux bugs. Mieux vaut traiter un problème connu plutôt qu'un inconnu. Si c'est simple, disons un changement de texte, ou une simple erreur logique, nous le réparons, sinon laissez-le tranquille.

Une chose à noter, tho, nous sommes une petite boutique de 4 développeurs et un stagiaire et le bug que je corrige est probablement le bug que j'ai créé.

Muad'Dib
la source
0

Si le code est manifestement erroné, le correctif est assez simple et vous pensez que le risque d'avoir un impact sur les utilisateurs est faible, alors foncez. Cela revient au jugement professionnel.

Vous devez cependant vous rappeler que si vous l'avez trouvé, il est probable que les utilisateurs ne l'ont pas fait, sinon ils l'auraient signalé. Plutôt que de passer du temps à résoudre un problème qui pourrait ne jamais être rencontré par un utilisateur, vous feriez mieux de passer ce temps à résoudre les problèmes qui causent des problèmes à vos utilisateurs maintenant.

Jason
la source
Si un utilisateur trouve un bug, à quelle fréquence sont-ils ennuyés par votre produit et votre entreprise, mais ne vous le signalent pas? Je suppose un pourcentage élevé.
Craig McQueen
0

Bien documenter d'abord les observations et décider de les corriger plus tard.

Ayez une discussion formelle (par exemple, lors de la réunion ordinaire) ou informelle (par exemple, pendant le déjeuner) avec vos collègues, et apportez les modifications après avoir acquis plus de confiance dans le comportement des codes que vous allez corriger.

Bien que cela vous semble un bug / défaut, il peut s'agir d'une "fonctionnalité" cette fois. Il pourrait s'agir d'une solution mal implémentée pour contourner certains cas de coin à la dernière minute de la version précédente, et votre «correctif propre» pourrait raviver certains problèmes précédemment résolus.

YYC
la source
0

Je vais inverser la tendance ici. À moins que vous ne soyez au tout début de la phase de développement du prototype, vous ne devez jamais le réparer immédiatement, vous devez déposer un rapport de bogue. Cela présente plusieurs avantages:

  • l'équipe doit l'évaluer. Est-ce un vrai bug, quels sont les risques de le corriger?
  • la direction décide si elle est suffisamment importante pour prendre en compte le calendrier de l'inclusion dans cette version
  • une méthode pour le détecter peut être ajoutée à la suite de tests, espérons-le d'une manière suffisamment générale pour trouver également des erreurs similaires.
  • il fournit des mesures précieuses sur le nombre de bogues qui glissent au cours des phases précédentes
AShelly
la source