在Perl中的尾随逗号是一个不好的做法?

今天我参加了一个Webex会议,展示了我写的一些Perl代码。 我的老板突然告诉我,而其他人都在看,我不得不从我的散列和数组结构中删除尾随逗号,因为这是一个不好的做法。 我说我不认为这在Perl中是不好的做法,但他坚持让我删除这些逗号,以便在会议中显示我的脚本。

我仍然认为在Perl中这不是一个坏习惯,但我可能是错的。 实际上,我发现他们很方便,也是一个很好的做法,因为他们阻止我添加新的元素,忘记在过程中添加相应的逗号。

但是,我真的很想知道这是一种好的还是坏的做法,并且能够以良好的论据,甚至是我的论据的良好来源向我的老板(如果他错了)展示给我的。

那么留下尾随逗号是不好的做法?

这是一个例子:

my $hash_ref = { key1 => 'a', key2 => 'b', key3 => 'c', }; my $array_ref = [ 1, 2, 3, ]; 

尾随逗号是一个很好的习惯。 拉里补充说,因为他看到程序员犯的一个共同的错误。 当他们将元素添加到列表(或任何他们的语言称为它)时,他们忘记了分隔符。 Perl允许有意使用尾随逗号。 这不是别的东西的怪癖或副作用。

然而,不好的做法是把你的老板以后可能纠正的事情分散在一个人的会议上。 除非会议特别是代码审查,否则你的老板浪费了一大堆时间。 我一直希望参加video会议,所以你必须input每分钟的报酬,以便在每个人的屏幕上显示一个柜台,显示有多less钱被浪费了。 花费几百美元注意你在工作程序中删除逗号会贬低那些废话。

因此,Miller提到的PBP页面认为,通过剪切和粘贴线条来重新排列列表更容易; 由Borodin链接的mod_perl编码风格文档认为,当你添加东西时,避免了短暂的语法错误。

在我看来,要比任何一个更重要的是,如果你总是有一个尾随的逗号,而你添加了一行,那么diff只会显示你添加的行,而现有的行保持不变。 这使责怪find更好,使差异更可读。

Apache的mod_perl编码风格文件说这个

无论何时创build列表或数组,总是在最后一项之后添加一个逗号。 这样做的原因是很有可能新的项目将被追加到列表末尾。 如果逗号丢失,并且没有被注意到,则会出现错误。

你的经理可能一直在想的是,在C中做同样的事情是不规范和不可移植的,但是他的非凡行为没有任何借口。

这确实是一个很好的做法,在着名的PBP中也提到过。

实际上有一个政策perlritic总是让我: https ://metacpan.org/pod/Perl::Critic::Policy::CodeLayout::RequireTrailingCommas

我喜欢领先的逗号,虽然我知道它相当不受欢迎,似乎在刺激诵读困难。 我也一直没有find一个perltidy选项。 它也修复了line-change-diff问题(除了第一行,但通常不会改变我的经验),我喜欢逗号排列整齐的列。 它也适用于空白不可知的语言,但不喜欢清单上的尾随逗号。 我想我学习这个模式,同时使用JavaScript …

 my $hash_ref = { key1 => 'a' , key2 => 'b' , key3 => 'c' }; my $array_ref = [ 1 , 2 , 3 ];