40 votes

Les virgules finales en Perl sont-elles une mauvaise pratique?

Aujourd'hui, j'étais dans une réunion Webex montrant mon écran avec certains Perl code que j'ai écrit. Mon patron m'a soudainement dit alors que tout le monde était à la recherche et de l'audition que j'ai dû supprimer les virgules de mon hachage et des structures de matrices parce que c'est une mauvaise pratique. Je l'ai dit, je ne pense pas que c'était une mauvaise pratique en Perl, mais il a insisté et m'a fait supprimer les virgules pour montrer mon script qui s'exécute dans la réunion.

Je pense toujours que ce n'est pas une mauvaise pratique en Perl, mais j'ai peut-être tort. Je trouve assez pratique et une bonne pratique parce qu'ils m'empêchent de m'y ajoutant de nouveaux éléments et oublier d'ajouter le correspondant de la virgule dans le processus.

Mais, j'aimerais vraiment savoir si c'est une bonne ou une mauvaise pratique et être en mesure de le montrer à mon patron (s'il se trompe), avec de bons arguments, et même de bonnes sources pour mes arguments.

Donc, est-ce une mauvaise pratique de laisser des virgules?

Ceci est un exemple:

my $hash_ref = {
    key1    => 'a',
    key2    => 'b',
    key3    => 'c',
};

my $array_ref = [
    1,
    2,
    3,
];

54voto

brian d foy Points 71781

C'est une excellente pratique d'avoir la virgule. Larry a ajouté ça à cause d'une erreur commune, il a vu les programmeurs font. Quand ils ont ajouté des éléments à une liste (ou quelle que soit leur langue l'a appelé), ils ont oublié le caractère séparateur. Perl permet à la virgule sur le but. Ce n'est pas un caprice ou un effet secondaire de quelque chose d'autre.

Ce qui est une mauvaise pratique, cependant, est de distraire une rencontre plein de gens avec quelque chose de votre patron pourrait avoir corrigé plus tard. À moins que la réunion a été spécialement une revue de code, votre patron a perdu beaucoup de temps. J'ai toujours souhaité qu'à se joindre à une conférence vidéo, vous avez dû entrer dans votre minute compensation pour un compteur serait montrer sur l'écran de chacun pour montrer combien d'argent a été gaspillé. Dépenser quelques centaines de dollars de regarder vous enlever les virgules sur un programme de travail serait de tasser ce non-sens.

32voto

ysth Points 54757

De sorte que le PBP page visée par Miller soutient pour rendre plus facile pour réordonner la liste par le découpage et le collage des lignes; le mod_perl style de codage document lié par Borodine plaide pour éviter un clin d'erreur de syntaxe lorsque vous ajouter des trucs.

Beaucoup plus importantes que ce soit, à mon avis, est que si vous avez toujours une virgule et que vous ajoutez une ligne, la diff ne montre que la ligne que vous avez ajouté et les lignes existantes restent inchangées. Cela rend la culpabilité de trouver mieux, et rend les comparaisons plus lisible.

17voto

Borodin Points 52478

L'Apache mod_perl style de codage document dit ce

Chaque fois que vous créez une liste ou un tableau, toujours ajouter une virgule après le dernier élément. La raison pour cela est qu'il est hautement probable que de nouveaux éléments seront ajoutés à la fin de la liste dans l'avenir. Si la virgule est manquant et ce n'est peut-être pas remarqué, il y aura une erreur.

Ce que votre gestionnaire peut avoir été la pensée de l'est qui font la même chose en C est non standard et non-portable, cependant il n'y a aucune excuse pour son extraordinaire comportement.

7voto

user2291758 Points 143

C'est en effet une bonne pratique et mentionnée également dans le célèbre PBP.

Il existe en fait une politique pour perlcritic qui m'obtient toujours: https://metacpan.org/pod/Perl::Critic::Policy::CodeLayout::RequireTrailingCommas

0voto

Skylos Points 69

Je suis leader de la virgule, même si je sais que je suis plutôt impopulaire et semble irriter les dyslexiques. J'ai aussi n'ont pas été en mesure de trouver un perltidy option pour elle. Il fixe la ligne de changement de diff de problème (sauf pour la première ligne, mais c'est généralement pas le seul à modifier dans mon expérience), et j'adore la façon dont les virgules ligne en pur colonnes. Il travaille aussi dans des langues que sont les espaces blancs agnostique, mais n'aime pas les virgules sur les listes assez facilement. Je pense que j'ai appris ce modèle tout en travaillant avec javascript...

my $hash_ref =
  { key1    => 'a'
  , key2    => 'b'
  , key3    => 'c'
  };

my $array_ref = 
  [ 1
  , 2
  , 3
  ];

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X