Le style de codage dans les organisations est-il facultatif?

30

Ce document de style de programmation a une règle générale, qui dit:

Les règles peuvent être violées s'il y a de fortes objections personnelles contre elles.

Cela entre en collision avec ma façon de penser, et de nombreux articles disent que le style de codage est réellement important. Par exemple, cela dit:

Un document sur les normes de codage indique aux développeurs comment ils doivent écrire leur code. Au lieu de coder chaque développeur dans leur propre style préféré, ils écriront tout le code selon les normes décrites dans le document. Cela garantit qu'un grand projet est codé dans un style cohérent - les parties ne sont pas écrites différemment par différents programmeurs. Non seulement cette solution facilite la compréhension du code, mais elle garantit également que tout développeur qui examine le code saura à quoi s'attendre tout au long de l'application.

Alors, ai-je mal compris quelque chose de ce document et la citation en haut de cette question? Les gens peuvent-ils vraiment ignorer le style de codage?


Peut-être que je n'étais pas assez clair, donc avec cette modification, je vais clarifier un peu.

J'écris le document de style de codage pour notre équipe et je veux vérifier le style en utilisant des analyseurs statiques. En cas d'échec, Jenkins enverra des e-mails. Et je veux échouer la révision du code, si le style ne correspond pas. Cela entre clairement en collision avec la première citation.

Mais alors, si la citation est correcte, à quoi sert le document de style de codage, si quelqu'un peut faire ce qu'il veut?

BЈовић
la source
La réponse est évidemment: cela dépend. Toutes les réponses ci-dessous conviennent à différentes équipes dans différentes entreprises qui ont des cultures différentes. Tout ce que vous proposez devrait correspondre à l'objectif de l'équipe - et vous devriez en avoir une idée car vous en aurez bien sûr discuté de manière informelle avec les membres de l'équipe, individuellement ou en petits groupes. Personnellement, je préfère a) tout ce pour quoi je peux simplement définir des options dans Emacs, Visual Studio et IntelliJ IDEA, et b) absolument aucun onglet dur dans les fichiers en aucune circonstance! Pour tout le reste, tout ce que l'équipe veut est ok.
davidbak
À mon avis, si vous écrivez un guide, vous avez déjà perdu la bataille. Aucun moyen de produire des documents faisant autorité que les développeurs liront réellement. Les IDE modernes sont livrés avec un ensemble de styles. Choisissez-en un et appelez-le votre référence.
Cerad
Le doc de style que vous avez lié est "un" doc de style de codage suggéré; ce n'est pas "le" style doc. Si vous créez la doc de votre site, utilisez celle-ci dans la mesure où elle vous convient. Si vous avez des objections, changez votre doc en conséquence. Par exemple, omettez les déclarations que vous n'aimez pas.
user2338816
"Les règles peuvent être violées s'il y a de fortes objections personnelles contre elles." Parfois, c'est une considération politique: la phase 1 est opt-in. Sans elle, un collègue senior de la vieille école pourrait tuer complètement l'idée de normes de code.
brian_o

Réponses:

12

Pour autant que je sache, la déclaration qui vous a troublé est un compromis pragmatique fait pour que les lignes directrices puissent servir un public aussi large que possible. En fonction de votre contexte spécifique (plus d'informations ci-dessous), vous pouvez avoir une option pour l'ajuster et utiliser plus efficacement les directives.

Vous voyez, les lignes directrices font référence à de «fortes objections personnelles» comme moyen de justifier la violation. De telles objections ne sont pas quelque chose à ignorer à la légère, surtout si elles proviennent de développeurs expérimentés.

Ces objections peuvent être erronées, faites attention, mais (et c'est très GRAND MAIS), elles peuvent également indiquer qu'une règle particulière est erronée - généralement ou dans le contexte du projet spécifique (un exemple de déréglementation de règle est une obligation de fournir journalisation détaillée dans le code critique de performance).

Je pense que tout guide de style sensé devrait prendre en compte ce qui précède et essayer de répondre à un éventuel besoin de s'ajuster. Maintenant, si le guide qui vous a dérouté ne visait que des équipes matures avec des processus et un environnement efficaces et fluides, il pourrait être énoncé de manière beaucoup moins ambiguë, par exemple comme ceci:

Les règles doivent être suivies strictement, à moins qu'une contestation ne soit lancée contre elles - auquel cas la règle contestée doit rester ignorée jusqu'à ce qu'elle soit résolue - soit en rejetant la contestation, soit en l'acceptant et en ajustant les règles en fonction.

Vous aimerez peut-être mieux ce qui précède et vous voudrez peut-être qu'il en soit ainsi partout, pour tout le monde, mais examinez de plus près cette partie «le défi est relevé / restez ignoré / ajustez» et demandez-vous comment il peut être mis en œuvre. Demandez-vous combien de temps cela peut prendre en fonction du projet et de l'équipe. Si cela prend une heure, est-ce acceptable? Et si cela prend un jour, une semaine ou ... un mois?

Vous voyez, cette approche défi-et-ignorer-jusqu'à-résolu pourrait ouvrir une large porte aux abus si elle était présentée comme un guide pour tout projet. "Ouais ouais nous vous entendons, faisons-le comme le guide le dit. Tout d'abord, remplissez ce formulaire de défi et obtenez les approbations du PDG / CFO / CTO. ; cela peut prendre une semaine ou deux. En attendant, assurez-vous que votre code critique de performances vomit des instructions de journalisation correctement formatées à chaque déplacement de registre. "

Je ne peux pas lire dans l'esprit des auteurs du guide, mais il semble raisonnable de supposer qu'ils voulaient éviter de l'utiliser pour justifier un gâchis comme décrit ci-dessus. De ce point de vue, il est tout simplement plus sûr d'affirmer clairement que le guide ne suppose aucune application - de cette façon, même maladroite, il permet toujours d'être utilisable pour un large éventail arbitraire d'équipes et de projets. On s'attend probablement à ce qu'une allocation aussi large laisse aux équipes plus matures et efficaces la possibilité de la réduire raisonnablement sans nuire à la productivité des développeurs.


Appliqué à votre cas spécifique, écrivant le document de style de codage pour votre équipe et échouant à la révision du code si le style ne correspond pas - je pense que vous devez comprendre combien de temps il faut aux développeurs pour contester une règle particulière, la faire ignorer, résolu, et faites-le changer ou récupérer selon la résolution.

Si vous trouvez un moyen de faire fonctionner ce processus sans introduire de nombreux obstacles dans votre flux de travail de développement, alors une approche formelle et facile à suivre de défi / résolution vaut vraiment la peine d'être envisagée au lieu du chaotique "violer si vous pleurez assez fort".


En guise de remarque, je voudrais aborder ce que vous avez écrit dans un autre commentaire , "Supposons que le style de codage est idéal, et si ce n'est pas le cas, etc."

C'est vraiment une hypothèse dangereuse. Je me suis cassé le nez dessus (deux fois! En un seul projet! Où j'avais une vaste expérience et imaginé que je sais tout à ce sujet, allez comprendre) et je vous recommande fortement de le laisser tomber. Il est plus sûr de supposer que le guide de style peut contenir des erreurs et de réfléchir à ce qu'il faut faire si de telles erreurs sont découvertes.

moucheron
la source
Disons-le de cette façon: notre équipe est petite et notre processus n'inclut personne au-dessus de mon patron (qui n'est qu'un chef d'équipe). Donc, les jeux comme vous l'avez expliqué ci-dessus ne se produiront pas.
BЈовић
@ BЈовић dans ce cas, l'approche défi / résolution semble clairement gagnante
moucher
53

Permettre aux gens d'ignorer les styles de codage en raison de leurs préférences personnelles est une mauvaise idée.

La citation dans votre question semble permettre à tout développeur de dire simplement "Je ne vais pas utiliser ce style parce que je ne l'aime pas."

Cela va à l'encontre de tout le point, qui consiste à amener tout le monde dans l'équipe à faire les mêmes choses pour la cohérence et la lisibilité.

Je suis d'accord qu'un document de style avec une telle déclaration est probablement inutile.

Néanmoins, une certaine flexibilité dans le respect des directives de style est souhaitable:

  • Suivre servilement une directive peut empêcher la meilleure façon d'écrire un morceau de code particulier . Les développeurs devraient être capables d'ignorer la directive et de démontrer que ce qu'ils ont fait est la meilleure façon, la plus lisible, d'accomplir quelque chose dans ce cas.
  • L'utilisation d'un code hérité peut nécessiter de la flexibilité. Ce n'est probablement pas une bonne utilisation de votre temps pour remodeler une grande base de code existante. Si vous réécrivez une section particulière de manière significative, vous pouvez la reformater dans le style préféré. Cependant, si vous apportez juste une petite modification, il peut être préférable d'utiliser le style existant du code.
  • Nitpicking sur chaque petite violation du guide de style n'est pas une bonne utilisation du temps. La révision du code est un bon moment pour mettre en évidence tout code qui est nettement en décalage avec le style de l'équipe. Cependant, attraper et corriger de petites "erreurs" de style est susceptible de devenir un travail chargé qui se concentre sur la mauvaise chose. Bien sûr, échouez à l'examen du code si le style a été ignoré de manière flagrante. Mais je n'aime pas l'idée d'exécuter un analyseur et de signaler toutes les parenthèses ou indentations mal placées, sans oublier d'échouer quelqu'un sur cette base.

En conclusion: accordez de la flexibilité dans le respect des directives de style, afin de répondre au mieux aux besoins de votre équipe - mais pas pour des raisons arbitraires comme les préférences personnelles.


la source
4
Il vaudrait mieux dire que s'il y a une bonne raison d'enfreindre les règles, alors brisez-les. Il est impossible d'énumérer toutes les bonnes raisons, mais je dirais que la simple préférence personnelle n'en est pas une. Le guide de style Python contient une section réfléchie sur le moment où vous devez enfreindre les règles.
Michael Hoffman
1
La vérification automatisée du style peut être utile: mais seulement si elle est combinée avec un bouton facile pour appliquer toutes les modifications recommandées, et une façon de dire "non, j'ai enfreint cette règle pour une raison". Selon votre niveau de processus, ce dernier peut être quelque chose qui doit être justifié dans la révision du code / etc.
Dan Neely
1
L'adhésion au style de code est si importante dans mon entreprise que PyLint applique les normes PEP8 sur notre code dans le cadre de notre pipeline de construction. Les validations qui réduisent l'intégrité du code sont automatiquement rejetées.
sethmlarson
1
Vérifiez suffisamment les règles pour obtenir le résultat dont vous avez besoin. Ignorez, mettez à jour ou renoncez à tout ce qui cause des problèmes. Appliquez une bonne dose de bon sens au commerce et à la productivité
Sean Houlihane
2
Au fil des ans, je suis parvenu à la conclusion que la seule partie vraiment utile des guides de style est d'indenter correctement le code. Vous n'avez même pas besoin de tous mettre en retrait de la même manière - juste en retrait correctement. Les guides de style que j'ai écrits ne contiennent généralement pas plus de 3 règles (généralement une seule règle - indentez correctement pour qu'elle ne soit pas moche). Si je viens dans un magasin et que le code semble déjà correct, je ne recommande même pas d'avoir besoin d'un style de codage.
slebetman
13

Il existe un style de codage et des guides de style pour rendre le code plus lisible. Et la lisibilité existe pour aider à la complexité.

Par conséquent, en fin de compte, s'il faut ou non violer (je l'appellerais adapter) le style de codage pour répondre à vos besoins organisationnels se résume à combien il aide à rendre les choses compréhensibles.

N'oubliez pas que tout, et je souligne que TOUT, de la programmation OO aux paradigmes fonctionnels, en passant par divers modèles de concurrence, existe pour la seule raison d'aider les gens à gérer la complexité.

Tout imbécile peut écrire du code qu'un ordinateur peut comprendre. Les bons programmeurs écrivent du code que les humains peuvent comprendre. - Martin Fowler, 2008

treecoder
la source
Votre réponse n'est pas claire OUI ou NON. Alors, dites-vous que c'est vraiment facultatif? Avec repos - je suis d'accord.
BЈовић
3
Oui, c'est facultatif si la violation aide vraiment (pensez au code hérité). Non, ce n'est pas si vous le faites uniquement parce que vous en avez envie et que cela n'apporte aucun avantage raisonnable. Donc, ce que je dis, c'est que rien n'est gravé dans le marbre. Casser quoi que ce soit ou rien pour l'objectif final de réduire la complexité.
treecoder
3
@ BЈовић Ce que Treecoder dit essentiellement, c'est que vous avez une mauvaise focalisation. Les règles ne sont pas magiques. Vous n'allez pas par magie améliorer tout en adhérant de manière rigide à un ensemble de règles. Vous devez donc réfléchir à: "Quelles sont ces règles censées accomplir?" à la place, et vous travaillez plutôt vers cet objectif. Les règles vous indiquent quelle devrait être votre valeur par défaut; si le respect des règles va à l'encontre de l'objectif qu'elles ont été mises en place pour accomplir, alors cela ne vaut pas la peine d'être suivi dans ce cas .
jpmc26
6

Le style de codage dans les organisations est-il facultatif?

Les organisations choisissent d'avoir des styles de codage - il n'y a pas d'exigence d'avoir en premier lieu.

Donc, la citation que vous lisez traite du plus gros problème que je vois concernant le codage du "style" et des vrais "hackers" de superstars - vous amenez un nouveau gars à bord et il écrit du code qui supprimera les zombies et fera crier rapidement vos anciens serveurs. .. mais son style de codage est différent de votre "style d'organisation accepté". Il refuse de changer et le processus pour amener chacun à se conformer à son style particulier sera long et coûteux. Maintenant quoi?

La plupart des super hackers que je connais viennent avec des ego aussi grands que leurs compétences, et ils veulent que l'organisation s'adapte à eux , pas l'inverse. Donc, peut-être que votre norme de style de codage devrait ressembler davantage à une directive de style de codage afin que vous puissiez laisser ce hacker tueur continuer à écrire du code rapide et incroyable avec une certaine déviance de style, mais assurez-vous que tout le monde le comprend jusqu'à ce qu'il atteigne son pirate épique statut, ils doivent suivre les règles (ou même aider à nettoyer après lui).

Bien sûr, c'est un cauchemar de gestion, mais la gestion des techniciens en général est un peu comme l'élevage de chats de toute façon. Ainsi, la plupart des entreprises ont des «directives de style» et non des «normes de style». Et les builds n'échouent pas et les revues de code n'échouent pas automatiquement en raison de violations de style dans toutes les entreprises. Vous pouvez décider du problème de gestion que vous souhaitez avoir - autorisez les pirates de superstar et avez des "directives" ou perdez les superstars et ayez un style de code plus cohérent.

Jim
la source
1
Re: "La plupart des super hackers que je connais viennent avec des ego aussi grands que leurs compétences": Je ne pense pas que ce soit vrai. Ils peuvent sembler avoir de gros ego parce qu'ils ne cèdent pas automatiquement à l'opinion des autres, mais ceux que je connais ont tous été très ouverts d'esprit si vous pouvez faire un bon argument pour ce que vous faites. (Bien que je ne sois pas sûr que "l'ego" soit exactement l'opposé du conformisme, de toute façon.)
ruakh
2
"La plupart des super hackers que je connais viennent avec des ego aussi grands que leurs compétences, et ils veulent que l'organisation s'adapte à eux, pas l'inverse." Je doute qu'un développeur soit si bon qu'il l'emporterait sur le coût d'une telle attitude et je doute qu'un tel ingénieur soit employé très longtemps.
Andy
1
"Et les builds n'échouent pas et les revues de code n'échouent pas automatiquement à cause des violations de style dans toutes les entreprises" En fait, je travaillais pour une entreprise qui avait en fait choisi cette voie, et le résultat était objectivement meilleur qu'avant l'application laxiste du normes.
Andy
3

Alors, ai-je mal compris quelque chose de ce document et la citation en haut de cette question? Les gens peuvent-ils vraiment ignorer le style de codage?

Ça dépend.

L'endroit où je suis actuellement n'a pas de guide de style, et ce n'est pas un gros problème. Il y a quelques légères variations entre les programmeurs, mais pas autant que pour avoir un impact significatif sur la lisibilité, la découvrabilité ou la cohérence. Et nous avons un groupe assez grand et une culture assez forte pour faire en sorte que tout nouveau membre de l'équipe fasse la queue (ou bien).

Dans les entreprises précédentes, nous grandissions rapidement et nous avions des gens qui ne connaissaient pas la langue et ses idiomes. Dans cette entreprise, l'afflux de personnes signifiait qu'il n'y avait pas de culture qui imposait une bonne écriture. Et les personnes nouvelles dans la langue signifiaient qu'il y avait beaucoup de choses à ajuster. Les vérificateurs de style automatisés étaient le moyen le plus efficace de faire les ajustements, et un véritable guide écrit était le meilleur moyen de former les nouveaux à nos attentes.

Personnellement, je ne me soucie pas beaucoup des guides de style et encore moins de l'application automatisée du style. Si la personne ne peut même pas comprendre les idiomes de base, pourquoi les employez-vous comme programmeur? Et s'ils sont un si mauvais joueur d'équipe qu'ils écriront continuellement du code avec lequel d'autres ont du mal à travailler, pourquoi les employez-vous du tout?

Telastyn
la source
1
Pour répondre à la dernière partie: c'était la décision de la haute direction d'externaliser certaines bibliothèques. Et mon équipe n'a aucune influence sur qui y travaille. Leur style de codage est complètement différent.
BЈовић
"nous avons un groupe assez grand et une culture assez forte pour faire en sorte que tout nouveau membre de l'équipe fasse la queue" On dirait que vous avez au moins quelques règles de style, elles ne sont tout simplement pas écrites?
@ dan1111 - bien sûr? Je veux dire qu'ils se résument probablement à "ne pas faire chier vos coéquipiers", mais la question portait spécifiquement sur les documents et la publication.
Telastyn
2

Il s'agit plus d'un stratagème psychologique que d'une interprétation littérale de la meilleure façon de gérer les styles de codage. Cela rend l'équipe / entreprise / manager / leader moins autoritaire. Je me concentrerais davantage sur les exceptions situationnelles plutôt que personnelles. Quel que soit le document de codage, l'objectif est de faciliter la lecture. Le code déroutant doit être traité et modifié si cela est jugé nécessaire. Il existe de nombreux outils pour prendre soin des petites choses fastidieuses, alors utilisez-les.

Il existe des exceptions à chaque règle. Donnez aux gens "une" marge de manœuvre. Moins tout le monde est impliqué dans l'acceptation des règles de style de codage (Welcome new guy.), Plus ils sont enclins à vouloir riposter. Beaucoup de choses sont en noir et blanc, mais certaines sont sujettes à interprétation.

L'objectif devrait être d'impliquer tout le monde dans l'esprit des directives de codage au lieu de se battre pour chaque petit détail et interprétation.

Oui, il arrivera un moment où le document de style de codage n'aura pas de sens à utiliser et où les développeurs professionnels et adultes devraient être autorisés à connaître la différence.

JeffO
la source
Donc, votre suggestion est de déployer un travail dans jenkins, qui va reformater le fichier dès que quelqu'un archivera quelque chose? BTW le "wiggle room" est, je suppose, quelque chose de similaire à cette réponse.
BЈовић
Si cela fait le travail et empêche une discussion d'une heure sur quelque chose qui peut être corrigé sans aucun effort, pourquoi pas.Les réponses sont similaires, mais je pense que cela a plus à voir avec le moral et l'état d'esprit de l'équipe. Vous pouvez avoir l'anarchie sans normes de codage aussi facilement que d'en avoir trop.
JeffO
2

En fonction de vos modifications, vous visez le bon objectif.

Il y a de nombreux avantages à utiliser un guide de style, mais les deux plus importants à mon avis sont la lisibilité du code entre les membres de l'équipe et le manque de commits "idiots" (comme les espaces blancs uniquement, ou les lignes supplémentaires et autres).

Pour atteindre votre objectif, votre guide de style choisi (ou créé) doit être simple et facile à respecter. Essayez de vraiment vous concentrer sur ce dont vous avez besoin. Personne n'aime avoir à revenir en arrière et réécrire un énorme échantillon de code juste pour faire plaisir à un linter. Mais il pourrait toujours y avoir un avantage.

Assurez-vous que les membres de votre équipe approuvent le guide de style. Vous allez les y tenir, assurez-vous qu'ils sont d'accord ou ce sera une lutte éternelle.

Assurez-vous que les violations de style sont un "avertissement" et non un "échec", laissez un humain décider si la violation rencontre un échec. La raison en est simple. Je crois en un flux de travail simple. Si, quelque part dans la phase de "test", un "échec" se produit, vous ne pouvez pas passer en production. J'utilise c'est comme sécurité. Même les correctifs doivent passer par une phase de test (bien que plus courte). Pouvez-vous vraiment dire que vous ne pousserez pas ce correctif de bogue critique vers la production parce que quelqu'un a utilisé un "au lieu d'un"? Qu'en est-il de l'utilisation d'une boucle for au lieu d'un chacun? Et si une boucle for a une certaine amélioration par rapport à chacun? sont des décisions qu'une machine (linter) ne peut pas prendre, alors assurez-vous d'avoir un humain, jugez l'avertissement, et non pas que la machine lance un échec.

Quant à ignorer le guide de style, vous devrez en juger au cas par cas. Assurez-vous que la «déviation» a une vraie raison. Ils viendront. Le travail des examinateurs est de s'assurer qu'il y a une bonne raison à l'écart et non une anecdote.

coteyr
la source
0

Je pense que la musique d'ambiance ici est que si la sagesse acceptée est que les normes de codage sont incorrectes ou incomplètes, alors c'est le moindre de deux maux à faire valoir si les développeurs sont généralement d'accord plutôt que de passer par le processus difficile d'obtenir le document modifié et réexaminé.

Il convient également de noter que les politiques de mise en œuvre standard du code d'antan ne sont généralement pas la façon dont les choses sont faites maintenant.

Dans l'ancien temps, vous vous contentiez de tenir le tome à la fin du bureau des développeurs et de citer le chapitre et le verset pourquoi son code violait la section 34.5.5767.

Nous avons maintenant des outils d'analyse de code statique et de documentation automatique qui enlèvent une grande partie de la corvée des normes de code.

À défaut de tout cela, vous pouvez toujours le renvoyer au développeur, le soulever dans une révision de code ou simplement le changer vous-même si vous êtes si enclin.

Robbie Dee
la source
Supposons que le style de codage est idéal, et si ce n'est pas le cas - alors les gens peuvent le changer. Les gens sont-ils même autorisés dans ce cas à l'ignorer?
BЈовић
Difficile à dire - surtout s'il n'y a pas de consensus global. Je suppose que l'ancienneté et / ou la médiation des développeurs entreraient en jeu ici ...
Robbie Dee
0

Votre question porte sur la réconciliation des deux citations. Je pense que ce que Treecoder a écrit répond généralement à votre question. Il représente votre principe directeur dans la rédaction de directives de style.

Plus précisément, puisque vous êtes responsable de la définition des directives de style de codage (c'est mon hypothèse puisque vous êtes l'auteur du document), vous décidez de ce qui est facultatif ou non, et dans quelle mesure vous autoriserez de la flexibilité dans le style personnel de votre équipe. Vous obtiendrez des commentaires si nécessaire. Mais une fois les directives en place, respectez-les.

Vous pouvez donc concilier les deux contradictions apparentes comme ceci:

Pensez à la première citation qui vous est adressée en tant que décideur de style, avant que le document de lignes directrices ne soit terminé. Si une certaine norme de style ne fonctionne pas pour votre équipe, cela compte comme une "forte objection personnelle" et vos directives la refléteront.

Pensez à la deuxième citation adressée à votre équipe, une fois le document terminé. Une fois que vous avez défini les directives pour l'équipe et que le document est écrit, il est important que tous les développeurs de votre équipe respectent les directives de style.

Price Jones
la source
0

Peu importe le style de codage que les gens ont, tant qu'ils ont un style de codage. Si une entreprise insiste sur un style de codage, elle marche fortement sur les orteils d'environ 49% de ses développeurs.

Le problème est qu'un grand nombre de développeurs ne se soucient pas beaucoup d'adapter leur style de codage à un standard répandu dans une entreprise, mais ils se soucient beaucoup d'être racontés par ceux qui sont meilleurs (ou qui se soucient simplement plus) de la politique de l'entreprise.

Cela signifie que la création d'une norme de style de codage peut être une énorme perte de temps, une source d'arguments sans fin, la cause d'un ressentiment infini et, dans l'ensemble, un énorme drain de temps et d'énergie.

gnasher729
la source
0

Je suis aux prises avec des directives de style de code depuis des années, comme beaucoup d'autres sur ce forum. Cela inclut à la fois les guides de style de combat que je trouve abhorrés et essayer d'encourager les autres à utiliser des guides de style pour maîtriser leur style afin qu'il soit plus lisible dans son ensemble.

La société bénéficie d'une norme de codage commune. Il y a beaucoup de choses importantes à considérer lors du développement de logiciels pour une entreprise, comme la façon dont nous formerons les nouveaux développeurs à récupérer le code de la génération précédente. Lorsque vous écrivez du code, vous n'y pensez pas toujours. En fait, de nombreux codeurs choisissent de ne même pas considérer comment d'autres pourraient vouloir aborder le code 5 ou 10 ans après leur départ. Un guide de style de codage est un moyen pour une entreprise de se concentrer sur ces objectifs de 5 et 10 ans, ce qui permet aux développeurs de travailler plus facilement dans un ensemble plus vaste de choses.

D'un autre côté, les guides de style de codage sont notoirement imparfaits, car il n'est pas possible de développer un style de codage parfait et de l'écrire. En fait, vous commencez à tomber dans des cas amusants où les preuves mathématiques commencent à échouer si vous essayez de le rendre parfait. Nous savons donc que les guides de style de codage sont imparfaits. Ils peuvent ne pas se concentrer parfaitement sur ce dont nous avons besoin dans 5 à 10 ans.

Si nous «appliquions» un style de codage, nous sacrifierions la valeur maintenant pour la valeur plus tard. Cela serait appelé "investissement" si nous pouvions être sûrs d'obtenir un retour sur nos efforts, mais tout développeur qui a travaillé avec un guide de style de codage mal écrit peut attester que ces gains de "lisibilité" sont payés cher en distrayant les développeurs loin de leur code. D'après mon expérience, il n'y a qu'un très petit nombre de cas où les styles de codage forcé ont du mérite, généralement sur les logiciels pour les clients glaciaires où les logiciels peuvent être utilisés pendant 30 ou 40 ans!

Au lieu de cela, je trouve plus efficace de traiter un guide de style de codage comme un manifeste: "C'est ce que nous pensons que le meilleur style de codage est pour notre groupe." C'est un tas de pensées fluides documentées par des mots. Le mot «croire» est important: si les croyances changent, les guides de style de codage devraient changer avec lui.

C'est là qu'intervient votre citation "fortes objections personnelles". Dans ce que j'appellerais un monde "parfait", vous écrivez le code que vous jugez le mieux et vous vivez avec les conséquences. Nous aimons souvent ignorer les conséquences "douces" lorsque nous programmons, mais dans ce cas elles sont importantes. Je n'ai aucun problème à ce que vous écriviez dans votre propre style, si cela ne vous dérange pas de ne jamais vous donner quelque chose d'important et de durable à développer.

Pensez à l'ensemble du système comme un terrain de golf. Le style de codage ouvre la voie facile le long du fairway. Si vous vous en tenez à la norme de codage, nous veillerons à ce que la vie soit aussi simple que possible. Plus vous vous éloignez, en utilisant vos propres normes de codage, plus vous devrez prouver votre valeur au sein de l'équipe.

Si je viens lundi matin, pour découvrir que vous avez passé tout le week-end à résoudre un problème sur lequel nous nous inquiétons depuis un an, et que vous l'avez fait dans votre propre norme de codage "spéciale", je ne vais pas vous dire de répare le. Je vais te dire d'aller prendre une douche. Si votre norme de codage "spéciale" est exceptionnellement "spéciale", je pourrais même suggérer à un développeur de niveau d'entrée de "réviser" le code pour diffuser la connaissance de la façon dont fonctionne votre code et mentionner avec désinvolture que si quelque chose semble difficile à lire, il / elle devrait ranger. Vous avez fourni suffisamment de valeur à l'entreprise ce week-end pour qu'il ne soit même pas nécessaire de mentionner les violations flagrantes des normes de codage que vous avez commises.

Il y a bien sûr des limites dans cette métaphore du golf. Si je vous demande de faire une tâche de classement et de fichier, peut-être en ajoutant de nouveaux champs à un formulaire, et que vous décidez de profiter de l'occasion pour refactoriser le code de remplissage de formulaire en fonction de votre style particulier, en utilisant un tas de caractères louches comme définir des macros et une technique de méta-programmation de modèle épouvantable que vous venez d'apprendre de l'échange de pile, il vous sera demandé de revenir en arrière et de le réparer. Vous avez choisi d'agir, ce sont les conséquences.

( Avertissement: j'ai totalement écrit cette implémentation de is_base_ofpour résoudre une tâche subalterne, et j'ai gagné tous les enfers que j'ai obtenus pour cela des développeurs seniors. Je dis que ça valait le coup. Je reçois toujours une bulle de rire joyeuse chaque fois que je regardez comment ce modèle coince comme 7 parties non liées de la spécification C ++ pour faire quelque chose d'incroyable. Prenez cela, vous les développeurs seniors! C'est ce que vous obtenez en interdisant boostce projet particulier! )

Cort Ammon - Rétablir Monica
la source
-1

Le mieux semble utiliser le formateur de code automatisé qui est une fonction intégrée de presque tous les IDE de descendance et devrait exister pour presque tous les langages de programmation plus ou moins répandus. Cela élimine silencieusement beaucoup de travail inutile et beaucoup de friction lors des révisions de code.

Il est tout à fait raisonnable d'exiger de tous les développeurs qu'ils développent une habitude pour appliquer le formateur à la section nouvellement créée du code.

Le pire que vous puissiez faire est d'exiger un style de codage personnalisé que le formateur de code existant ne prend pas en charge.

Dans des cas relativement rares, certaines sections peuvent être formatées différemment, si le formateur le fait vraiment horriblement, mais il est généralement préférable d'ajuster le formateur pour que tous les mettent en forme mieux.

Il peut y avoir des règles utiles que le formateur ne peut pas prendre en charge (comment nommer les variables, par exemple) mais si seulement elles restent, elles sont relativement faciles à suivre.

h22
la source
malheureusement, cela ne répond pas directement à la question . +1 de toute façon, pour de bons conseils et une solution pratique pour des allers-retours inutiles sur le style. configurer le formateur et en finir avec lui.
Bruno Schäpper
Je pense toujours qu'avoir juste un formateur est la meilleure solution pour le problème de style de codage, car il fournit à la fois un style cohérent et élimine la possibilité de se mobiliser sans aucun besoin de tous les nouveaux développeurs pour les espaces et les extrémités de ligne mal placés. J'ai vu cela fonctionner très bien dans les situations réelles, c'est pourquoi je recommande cette solution et ne supprimera pas la question.
h22
-1

Solution réelle (pas seulement la philosophie)

Autorisez les commentaires de code à remplacer les peluches et compilez des listes de ces commentaires si vous le souhaitez (comme c'est souvent le cas avec les commentaires à faire)

Donnez à vos développeurs la possibilité de travailler en dehors de la convention de manière explicite et avec raison - et lors des révisions de code par des humains, il peut être examiné au besoin.

Adam Tolley
la source