为什么在分号前加一个空格是不好的?

时间:2009-08-12 14:32:35

标签: perl coding-style

perlstyle pod状态

  

分号前没有空格

我认为没有理由。我知道在英文中,在由两部分构成的字符之前不应该有任何空格(比如'?',';','!'),但我不明白为什么在编写Perl代码时这应该是一个规则。 / p>

我承认我个人在分号前使用空格。我的理由是它使声明更加清晰。我知道这不是一个非常强大的理由,但至少这是一个原因。

print "Something\n with : some ; chars"; # good
print "Something\n with : some ; chars" ; # bad??

第二个坏的原因是什么?

10 个答案:

答案 0 :(得分:17)

从“描述”部分的第一段开始:

  

当然,每个程序员在格式化方面都有自己的偏好,但有一些通用的指导方针可以使您的程序更易于阅读,理解和维护。

从描述部分的第三段开始:

  

关于代码的美学布局,关于Larry唯一关心的唯一事情是多行BLOCK的结束大括号应与启动构造的关键字对齐。除此之外,他还有其他不那么强烈的偏好:

这只是Perl程序员对风格的一种约定。如果你不喜欢它,你可以选择忽略它。我会将其与Sun's Java Style guidelinesthe suggestions for indenting in the K&R C book进行比较。有些环境有自己的指导方针。这些恰好是对Perl的建议。

这个问题的Jon Skeet said in a deleted answer

  

如果您乐意与其他人喜欢的内容不一致,那么请以最易读的形式为您撰写。如果你可能会与他人分享你的代码 - 特别是如果他们也会贡献代码 - 那么值得尝试同意一些一致的风格。

答案 1 :(得分:8)

这只是我的意见,但我也意识到人们以不同的方式阅读代码,所以“坏”是相对的。如果你是唯一一个看过代码的人,你可以做任何你喜欢的事情。但是,看了很多Perl代码,我只看到有几个人在语句分隔符之前放了空格。

当你做的事情与世界其他地方的做法截然不同时,差异对其他人来说很突出,因为他们的大脑并没有以同样的方式看待它。相反,以不同方式做事会使您更难以阅读其他人的代码,原因相同:您没有看到您期望的视觉模式。

我的标准是避免视觉混乱,我应该看到上下文的岛屿。任何突出的东西引起注意,(正如你所说的那样),但我不需要引起我对语句分隔符的注意,因为我通常每行只有一个语句。我真的不需要看到的东西应该淡入视觉背景。我不喜欢半冒号脱颖而出。对我来说,分号是一个小问题,我希望减少我眼睛看到的不同群体的数量。

有时标点符号很重要,我希望这些标点能够脱颖而出,在这种情况下,分号需要 out out 。我经常使用条件运算符来执行此操作,例如:

my $foo = $boolean ?
            $some_long_value
                  :
            $some_other_value
                  ;

如果你是一个新的编码器,输入该死的语句分隔符可能是你生活中的一大痛苦,但你的痛苦会随着时间的推移而改变。后来,你选择减轻一种疼痛的风格变得痛苦。你最终会习惯语法。更好的问题可能是,他们为什么不脱颖而出?如果您使用的是具有较重和较大标点符号的优秀程序员字体,您可能会更容易看到它们。

即使您决定在代码中执行此操作,我发现人们在写作时也会这么做。在Stackoverflow之前我从来没有真正注意到它,但是很多程序员在大多数标点符号之前放置空格。

答案 2 :(得分:4)

这不是规则,它是Larry Wall的风格偏好之一。样式首选项是指帮助您和维护代码的其他人可以快速准确地直观地吸收信息。

在这种情况下,我同意拉里的观点,并且在分号之前找到空间丑陋并且破坏了我的阅读过程,但是像你这样的其他人可能会发现完全相反。当然,我会更喜欢你使用我喜欢的那种风格,但是关于它的书籍没有任何法律规定。

然而

答案 3 :(得分:4)

像其他人所说的那样,这是一个风格问题,而不是一个硬性规则。例如,我不喜欢四个缩进空格。我是块级缩进/空格的真正选项卡,用于排序程序员,所以我忽略了perlstyle的那一部分。

我还需要风格的理由。如果你不能清楚地说明你为什么喜欢某种风格,那么这条规则毫无意义。在这种情况下,原因很容易看出来。不需要的空格用于引起对某事物的注意或使某些事物更容易阅读。那么,分号是否值得特别注意?每个表达式(限制控制结构)都以分号结束,大多数表达式都适合一行。所以提请注意预期的案例似乎浪费了程序员的时间和注意力。这就是为什么大多数程序员缩进一个表达式的延续,以引起注意它不会在一行上结束的事实:

open my $fh, "<", $file
    or die "could not open '$file': $!";

现在,我们使用空格的第二个原因是让事情更容易阅读。是

foo("bar") ;

更容易阅读
foo("bar");

我会提出更难阅读的声明,因为它引起了我对分号的注意,而且我在大多数情况下,如果文件格式正确,我不关心分号。当然Perl关心,如果我错过了它,它会告诉我它。

答案 4 :(得分:4)

随意放置空间。重要的是你要保持一致;一致性使您可以更容易地发现错误。

有一种有趣的编码风格,并且;在下一行的开头(缩进后)。虽然这不符合我的口味,但只要它是一致的,它就会起作用。

更新:这种编码风格的一个例子(我做不是提倡者):

; sub capture (&;*)
   { my $code = shift
   ; my $fh   = shift || select
   ; local $output     
   ; no strict 'refs'
   ; if ( my $to = tied *$fh )
      { my $tc = ref $to
      ; bless $to, __PACKAGE__
      ; &{$code}()
      ; bless $to, $tc
      }
      else
      { tie *$fh , __PACKAGE__
      ; &{$code}()
      ; untie *$fh
      }
   ; \$output
   }

可在此处找到辩护:http://perl.4pro.net/pcs.html

(2011年更新:该页面似乎已经破产了;可以在此处看到获救的副本:http://ysth.info/pcs.html

答案 5 :(得分:2)

嗯,这是风格,而不是规则。根据定义,样式规则相当随意。至于为什么你不应该在分号之前放置空格,这只是因为那就是它的完成方式。不仅仅是Perl,还有C和所有其他curles-and-phamicolons语言可以追溯到C和更新的受C影响的语言,如C ++,C#,Objective C,Javascript,Java,PHP等。

答案 6 :(得分:1)

因为人们不期望它。当你这样做时看起来很奇怪。

答案 7 :(得分:1)

我要引用的原因是在项目中保持一致。我一直在一个项目中,大多数程序员不会插入空间但一个程序员会这样做。如果他处理缺陷,他可能会经常在他正在检查的代码行中添加空间,因为这是他喜欢的,风格指南中没有任何内容可以说明。

使用中的视觉差异工具无法确定这一点,因此当只有一个可能已更改并变得难以查看时,显示大量的行更改。 (好吧,这可能是更好的差异工具的一个论据,但嵌入式工作往往会更多地限制工具选择。)

也许一个合适的指南是选择你想要的分号格式,但除非你修改语句本身,否则不要改变其他格式。

答案 8 :(得分:0)

我真的不喜欢它。但是,你必须做出100%的个人决定和团体会议。

答案 9 :(得分:0)

代码样式只是一组规则,使阅读和维护代码更容易。 没有真正糟糕的风格,但有些比其他人更容易接受。它们当然是一些“宗教斗争”的来源(称为花括号样式;-))。

为了进行真实的生活比较,我们有红色,黄色/橙色和绿色的交通灯。尽管颜色的心理影响,使用紫色,棕色和粉红色并没有错,但仅仅因为我们都习惯了颜色,所以交通事故就更少了。