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

时间:2014-05-19 23:05:42

标签: arrays perl hash

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

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

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

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

这是一个例子:

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

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

5 个答案:

答案 0 :(得分:55)

使用尾随逗号是一种很棒的做法。 Larry之所以添加它,是因为他看到程序员在列表中添加元素(或者他们的语言称之为忘记分隔符.Perl允许尾随逗号使其不那么常见。这不是其他东西的怪癖或副作用。这就是Perl希望你这样做。

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

答案 1 :(得分:32)

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

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

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

答案 2 :(得分:17)

Apache mod_perl coding style document说这个

  

每当您创建列表或数组时,请始终在最后一项之后添加逗号。这样做的原因是,将来很有可能将新项目附加到列表的末尾。如果缺少逗号并且没有注意到,则会出现错误。

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

答案 3 :(得分:7)

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

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

答案 4 :(得分:0)

我赞成引用逗号,但我知道它相当不受欢迎,似乎会激怒阅读障碍。我也无法为它找到一个perltidy选项。它也解决了line-change-diff问题(除了第一行,但通常不是根据我的经验改变的那个),并且我喜欢逗号在整齐的列中排列的方式。它也适用于与空白无关的语言,但不喜欢列表中的尾随逗号。我想我在使用javascript时学习了这个模式......

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

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