J'aime vraiment cet article sur le fait de laisser le code / camping dans un état plus agréable que vous ne l'avez trouvé - cela semble être une approche pratique dans le monde réel pour rester au top de la propreté du code.
J'aime aussi beaucoup les branches de fonctionnalités comme moyen de développer des fonctionnalités isolément, de sorte que si vous ne l'aimez pas, vous ne pouvez pas facilement les fusionner, etc.
Cependant, si je travaille sur une branche de fonctionnalité et que je repère du code laid, dois-je le réparer?
Il semble qu'il y ait plusieurs inconvénients à le réparer:
- Lorsque je fusionne la branche, le diff sera désordonné, encombré de noms de variables ou d'extraction de fonctions
- Si la fonctionnalité est abandonnée, vous devez soit choisir la validation de nettoyage (qui peut ou non fonctionner selon la façon dont le code à proximité a changé, ce qui rend la fusion désordonnée), la refaire ou simplement l'abandonner.
D'un autre côté, si je ne le fais pas pendant que je suis dans le fichier, alors j'oublierai clairement de le faire dans quelques jours lorsque je fusionnerai la branche.
J'ai été averti que c'était basé sur une opinion (je pense juste que le titre comprend should
), mais j'ai l'impression qu'il y a une réponse (certainement les gens utilisent ces deux approches donc ils doivent avoir une réponse). De plus, les questions development methodologies
sont sur le sujet et je pense qu'elles nécessitent un certain degré d'opinion.
la source
Réponses:
Vous ne devez «corriger» le code dans une branche de fonctionnalité que si vous modifiez de toute façon ce morceau de code dans le cadre de la fonctionnalité.
Par exemple. Je travaille sur la fonction "imprimer des lapins" et je trouve le code de l'imprimante
Je le change en:
Pourquoi:
Je ne frappe pas au hasard une autre partie de la base de code et «l'améliore» comme cela:
la source
Si vous souhaitez que vos refactorisations "vivent indépendamment" de votre branche de fonctionnalité actuelle, n'y apportez pas les modifications. Au lieu de cela, effectuez le refactoring sur la branche de développement principale (ou une "branche de refactoring", s'il est courant dans votre équipe de ne pas appliquer les modifications directement à la branche de développement). Ainsi, n'importe qui de votre équipe (y compris vous) peut fusionner les modifications dans les branches de fonctionnalités actives sur lesquelles il travaille. Cependant, veillez à ne pas appliquer de refactorisations globales dans "la moitié de la base de code" sans demander d'abord la permission à vos collègues - ils pourraient ne pas être si heureux si vos refactorings interfèrent trop avec leur travail actuel.
L'exception est ici lorsque les améliorations que vous apportez sont locales aux parties de la base de code que vous touchez exactement dans cette branche de fonctionnalité, et cela n'a aucun sens de leur donner un cycle de vie différent de votre "nouvelle fonctionnalité".
la source
Le but des
branch
types est de fournir l' intention de les manipuler. Si vous suivez un style GitFlow de ramification, alors vous avez probablement des types commefeature
,hotfix
,release
, etc .. Dans le cas d'une branche de fonction, son intention est d'encapsuler une fusion dans une autre branche (c. -àdevelop
) qui montre le développeur responsable fusion, quelle est cette fonctionnalité. Si le code que vous nettoyez ne fait pas partie de cette fonctionnalité, ne le modifiez pas.Au lieu de cela, recherchez la branche la plus basse possible dans laquelle le code laid se trouve (probablement
develop
) et branchez-vous à partir de là. Modifiez le code et proposez-le de le fusionner en tant que fonctionnalité. Si vous avez besoin de ce code dans ce sur quoi vous travaillez et que vous voulez surtout éviter les conflits de fusion, fusionnez cette branche dans VOTRE branche.Voici une assez bonne explication des différentes stratégies: https://www.atlassian.com/git/tutorials/comparing-workflows/
la source
Il est probablement correct de corriger le «code laid» à vue, selon le tempo du projet, la «laideur» du code, etc., mais essayez de ne pas le faire sur la branche de fonctionnalité elle-même.
git add -p
pour le corriger, valider cette modification uniquement et avant de fusionner / push (en effet, de préférence après votre prochain commit), utilisez un rebase interactif pour déplacer ce commit vers le point le plus tôt possible dans votre branche, ou peut-être même choisir le développement, en fonction de votre historique.Je le ferais également avec tout autre élément qui «corrige» la branche de développement (où «correctifs» sont des modifications que vous ou tout autre développeur pouvez apporter à vue pour vous assurer que le code respecte les normes). CA aide...
la source