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

Fra*_*ozo 40 arrays perl hash

今天我在Webex会议上用我写的一些Perl代码显示我的屏幕.我的老板突然告诉我,而其他人都在寻找并听说我必须从哈希和数组结构中删除尾随逗号,因为这是一个不好的做法.我说我不认为在Perl中这是一个不好的做法,但他坚持并让我删除那些逗号只是为了显示我的脚本在会议中运行.

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

但是,我真的很想知道这是一个好的或坏的做法,能够向我的老板(如果他错了)展示好的论据,甚至是我的论据的良好来源.

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

这是一个例子:

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

my $array_ref = [
    1,
    2,
    3,
];
Run Code Online (Sandbox Code Playgroud)

bri*_*foy 55

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

然而,糟糕的做法是让你的老板可以在以后更正的事情中分散会议.除非会议是专门的代码审查,否则你的老板浪费了很多时间.我一直希望加入视频会议,你必须输入你的每分钟补偿,这样每个人的屏幕上都会显示一个计数器,以显示浪费了多少钱.花几百美元看着你删除工作程序中的逗号会扼杀那些废话.

  • 非常感谢你回答这个问题brian!:-) (3认同)

yst*_*sth 32

因此,米勒提到的PBP页面主张通过剪切和粘贴线条来更容易地对列表进行重新排序; 由Borodin链接的mod_perl编码样式文档主张在添加内容时避免出现瞬间语法错误.

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

这三个都是总是使用尾随逗号的充分理由,我认为没有充分的理由不这样做.

  • 我也很欣赏这个事实.当其他语言不允许使用尾随逗号时,我发现它令人失望. (6认同)

Bor*_*din 17

Apache mod_perl编码样式文档说明了这一点

无论何时创建列表或数组,始终在最后一项之后添加逗号.这样做的原因是,将来很有可能将新项目附加到列表的末尾.如果逗号丢失且未注意到,则会出现错误.

你的经理可能一直在考虑的是,在C中做同样的事情是非标准的和不可移植的,但是他的非凡行为没有任何借口.


use*_*758 7

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

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