6
votes

Code hérité: formater ou ne pas formater?

Notre équipe a récemment hérité de code qui est extrêmement désorganisé.

En conséquence, mon chef d'équipe a décidé de faire respecter une stratégie de formation automatique du code avant d'enregistrer un fichier. Nous avons même trouvé une option dans Eclipse (l'IDE de notre choix) qui forme automatiquement le code avant chaque action de sauvegarde.

Personnellement, je suis contre cela parce que je pense que le codage approprié empêche le code désordonné (la plupart du temps) alors que la formation automatique ne signifie pas codage approprié.

Quelles sont vos opinions?


2 commentaires

Peut-être que vous pourriez nous fournir des exemples de code que vous ne voudriez pas voir automatiquement ...


Je suis désolé, je ne peux pas depuis son tout exclusion et au cœur de la logique commerciale de notre produit :(


12 Réponses :


8
votes

format automatique du code hérité juste une fois, puis continuez sans formatage automatique.


2 commentaires

Essentiellement, pas une si mauvaise idée, mais je ne suis pas mon chef d'équipe, et il souhaite continuer avec le formatage automatique pour toujours ...


Oui, je pense que l'utilisation du format automatique autrement serait une bonne idée d'obtenir le codebase sous contrôle, puis de continuer sans cela, de sorte que le jugement humain puisse prendre le relais.



16
votes

Je ne suis pas d'accord avec vous. Pour moi, la mise en forme, même si ce n'est qu'un moyen de "présenter" le code source, est également un indicateur de qualité de code important.

L'utilisation du formatage automatique présente plusieurs avantages. Il homogène le format entre tous les développeurs de l'équipe. Cela vous évitera des problèmes avec la manipulation SCM: par exemple, la fusion de deux fichiers qui ont peu de changements réels, mais beaucoup de différences de formatage sont un cauchemar!

Cela peut également vous montrer des erreurs. Par exemple: xxx

sera reformaté: xxx

montrant que la deuxième ligne est non Dans l'instruction si .

dernier, mais non le moindre, un code bien formaté (non seulement pour Java) est plus facile à lire!


7 commentaires

Mais puis-je ne pas appliquer une politique moins rigide en termes humains et ne pas être aussi stricte qu'un ordinateur?


La question est la suivante: y a-t-il des avantages de briser le style de formatage? Sinon, pourquoi ne pas utiliser un formateur automatique?


La lisibilité est parfois orientée contextuelle ...


Je suis tout à fait en désaccord, de l'expérience amère. J'ai vu plusieurs très grandes bases de code sont formatées de manière experte pourtant résoudre les problèmes de manière très compliquée.


(Pour qualifier les commentaires précédents, je faisais référence au point "Indicateur de la qualité du code" au début de la poste)


Votre réponse ne concerne pas le formatage automatique mais le formatage en général. Il existe d'autres options pour homogénéiser le format. Le plug-in Checkstyle ferait l'erreur dans votre exemple encore plus frappant car cela crée un avertissement au lieu de simplement reformater.


Je suis d'accord, la checkstyle et le formatage (auto) ne sont pas exclusifs! Ils doivent être utilisés en même temps!



5
votes

Dans mon avis, le formatage du code cohérent améliore la lisibilité. Il n'est clairement pas substitut à un bon code, mais d'autre part, la construction la plus brillante qui est formatée de manière polyvalente ne peut pas non plus être appelée bonne code.

Le problème avec le format automatique pour moi est principalement qu'il perturbe le système de versement. Une conversion ponctuelle de formatage - sans autre changement - peut cependant bien améliorer le flux de travail.


0 commentaires

2
votes

Nous utilisons réellement une formation automatique dans Eclipse et que cela rend souvent mon code moins lisible, par exemple en insérant dans de nombreuses pauses de ligne. Et comme nous avons migré vers une nouvelle version Eclipse, le format n'était pas le même bien que nous utilisions les mêmes paramètres. C'est un énorme inconvénient en combinaison avec un système de contrôle de version. Je préfère le plugin de checkstyle pour obtenir un style de code cohérent.

Mais comme dit, j'utiliserais une autoformatère une fois lorsque vous refactez un fichier.


2 commentaires

Le formateur Eclipse peut être configuré en haut degré ...


@Christian: Vous utilisez ensuite une version d'éclipse plus ancienne ou un paramètre de surveillance. Eclipse Formats ici avec des espaces depuis des âges. Si je me souviens bien, il y a 3 emplacements où vous avez défini pour utiliser des espaces au lieu d'onglets. Bonne chance.



0
votes

Le même problème que je peux penser avec l'activation automatique de la mise en forme automatique dans Eclipse, c'est que si vous utilisez le contrôle de la source (vous utilisez le contrôle de la source, non?), le diffs sera massif et il sera peut-être difficile de déchiffrer Qu'est-ce qu'un changement de code réel par rapport à un changement de format.

Cela étant dit, le code bien formaté est essentiel pour écrire un logiciel solide.


1 commentaires

Nous utilisons le contrôle de la source et nous aurions pu vouloir vérifier dans tous les fichiers après le format automatique sans autre changement humain.



3
votes

Un formatage cohérent du code aide vraiment avec diffusion et tel lors de la soumission de code.

J'ai configuré mes scripts de contrôle source au format automatique au "style house" lors de la poussée et du format automatique sur mon style préféré lors de la tirage, donc tout le monde est heureux.

Je vous recommande de considérer la même chose.


0 commentaires

2
votes

dépend de ce que vous entendez par "désorganisé". Parlons-nous des incohérences stylistiques, ou la structure de classe est-elle un hodge-podge inintelligible? Je suppose que le premier si vous y répondez via une formatrice automatique.

"codage approprié" ne signifie pas nécessairement "cohérent entre les développeurs". Si j'avais mon éditeur défini sur des onglets rigoureux de quatre espaces et que vous avez le choix sur les onglets logiciels à trois espaces, le code que nous travaillons tous les deux va ressembler à un cul. (Et notre responsable de projet devrait probablement vous planter à la fois à la fois à la tête et laissez-nous savoir quelle standard nous devrions utiliser.)

Le formateur automatique est un peu une solution de force brute et est à peu près garantie de transformer occasionnellement quelque chose d'inhabituel mais parfaitement lisible dans un gâchis. Si le code est vraiment autant d'un gâchis, c'est un point de départ raisonnable. Mais une fois que vous avez automatiquement formaté la majeure partie du code préensitant du code préexistant, vous ferez mieux d'établir les conventions de style préféré de l'équipe et de procéder à partir de là.


1 commentaires

La seule règle dont vous avez besoin pour cette situation est "Conservez le style de fichiers que vous modifiez" non "Tout le monde de l'équipe doit utiliser style x"



1
votes

Je pense que le format de votre code est important. Les exemples fournis mettent en évidence le potentiel d'erreurs idiotes comme celui-là pour se glisser, bien que je voudrais utiliser l'exemple pour discuter de toujours en utilisant les accolades!

Je trouve que vous devez travailler plus fort pour comprendre le code lorsque vous envisagez des fichiers source qui ont une variété de formatage différente. Les modèles de code réguliers facilitent la compréhension de la sémantique car les déclarations sont toutes "au bon endroit".

Je ne suis pas sûr de ce qui était signifié par "codage approprié" car il semble un peu ambigu de ce qui constitue "approprié". Il existe des constructions linguistiques qui ne doivent probablement jamais être utilisées dans des circonstances normales et des anti-motifs d'ingénierie logicielle qui doivent être évités. Si ces choses sont ce que l'on entend par codage approprié, alors que ces choses sont importantes, mais elles ne réfléchissent pas au formatage du document de fichier source.

Il existe des outils pour forcer le formatage de code dans un fichier source en effectuant des violations des défaillances de la construction de formatage. Au début, j'étais sceptique de tels outils car ils semblent un peu draconien, mais j'ai constaté que la structure de l'uniforme du code une véritable productivité augmente.

P.s. Dernière déclaration complètement anecdotique car je n'ai aucune mesure pour le sauvegarder.


0 commentaires

0
votes

Le code de formatage est extrêmement important:

  • En conservant le code correctement en retrait, la navigation à travers les fichiers moyens ou volumineux peut être plus facile sur l'utilisateur.
  • En gardant un style de codage consistent sur tous les projets, lorsque les personnes se déplacent vers d'autres projets, ils seront plus familiers avec le code. Bien entendu, cela est également lié aux directives de codage, comment nommer des variables, etc. qui doivent également être relativement normalisées dans un terrain d'entente.
  • Si vous passez du temps à faire des règles de mise en forme du code appropriées, vous garantissez également que le code peut être visualisé par plus d'utilisateurs (je devais éditer le code à la main dans un texte [Penser Bloc-notes ou Emacs] à la main, malheureusement. En définissant une longueur de ligne à 80 cols ou de sorte qu'il peut aider)
  • surtout, en gardant le formatage cohérent, vous pouvez differez deux fichiers beaucoup plus faciles

2 commentaires

Tout ce que vous avez dit est vrai - mais je pense que cela ne nécessite pas de formatage automatique ...


Ce n'est pas une obligation d'utiliser un formateur, mais il est beaucoup plus facile d'utiliser un format automatique que de formater à la main.



3
votes

Je suis avec votre chef d'équipe sur celui-ci et j'ai deux suggestions pour vous:

  1. enregistrer chaque fichier une fois que le seul Le changement est le formatage avec un commettre un message qui reflète que C'était tout ce qui a changé, puis va retour et faire votre code actuel changements. Cela vous sauvera beaucoup de temps quand vous avez besoin de diff changements. Le format révision sera avoir presque toutes les lignes de code changé, donc ce sera pratiquement impossible de trouver un vrai changement sur la même révision.

  2. d'accord sur une norme de codage et Personnalisez l'outil Auto-Format d'Eclipse suivre cette norme.


0 commentaires

2
votes

I, comme une équipe de développement, je suis contre le formatage automatique. Étant donné que le code lisible est important, il est important que les développeurs responsables puissent formater leur code à leur guise. Les formateurs automatiques peuvent ruiner soigneusement des commentaires conçus, ils se débarrasseront des lignes vierges supplémentaires insérées pour plus de clarté, etc.

Nous utilisons des plugins tels que CheckStyle avec un jeu de règles standard qui doit être adhéré à, vérifié dans le code ne devrait avoir aucun avertissement de checkstyle. Si un code non structuré vient, le formateur Eclipse peut faire le premier nettoyage et la vérification de la vérification et les amis indiquent les problèmes laissés à résoudre.


0 commentaires

0
votes

Dans votre carrière, vous devrez suivre les normes de chaque entreprise. Cela signifie qu'une grande partie du temps que vous ne pouvez pas être d'accord avec la politique.

En ce qui concerne l'utilisation d'une norme d'entreprise pour la mise en forme automatique est non professionnelle et finalement mauvais pour la façon dont votre patron et votre plus haute mesure vous aperçus comme ils penseront que vous n'êtes pas un joueur d'équipe. Vous vous habituerez à ce que le formatage standard est peu importe à quel point il provient de ce que vous souhaitez et un jour lorsque vous êtes le gestionnaire, vous pouvez choisir comment le formatage sera effectué. En attendant, ce n'est pas votre appel (vous ne possédez pas la base de code, la société fait) et vous devez faire ce que vous avez demandé de faire.

Si vous avez des exemples valides de la manière dont l'autoformat rend le code plus difficile à lire, vous pouvez les partager avec votre patron, mais honnêtement, c'est un combat que vous êtes peu susceptible de gagner et cela vous permet d'essayer de tenter.


1 commentaires

Merci pour l'avertissement - mais mon chef d'équipe et moi sommes en bons termes. Je pensais juste que c'est un dilemme intéressant et souhaitait entendre quelle expérience avait enseigné aux autres, en dehors de la société que je travaille.