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

jej*_*eje 14 perl coding-style

perlstyle荚状态

分号前没有空格

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

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

print "Something\n with : some ; chars"; # good
print "Something\n with : some ; chars" ; # bad??
Run Code Online (Sandbox Code Playgroud)

第二个坏的原因是什么?

Tho*_*ens 17

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

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

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

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

这只是Perl程序员对风格的一种约定.如果你不喜欢它,你可以选择忽略它.我会将它与Sun的Java风格指南K&R C书中的缩进建议进行比较.有些环境有自己的指导方针.这些恰好是Perl的建议.

正如Jon Skeet在这个问题的删除答案中所说:

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


bri*_*foy 8

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

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

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

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

my $foo = $boolean ?
            $some_long_value
                  :
            $some_other_value
                  ;
Run Code Online (Sandbox Code Playgroud)

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

即使你决定在你的代码中这样做,我发现人们在写作中这样做很奇怪.我从来没有在Stackoverflow之前注意到它,但是很多程序员在大多数标点符号之前放置了空格.

  • 当着名的Perl作者将条件运算符(http://perldoc.perl.org/perlop.html#Conditional-Operator)称为"三元运算符"时,它会让婴儿骆驼哭泣. (3认同)
  • @brian d foy:在C中也称它为错误.每当有人突出公开发布此错误时,更多人会认为这是正确的.@Manni:如果没有像你这样的人,我就不用费心了. (3认同)
  • 当然.?:是*a*三元运算符,但你正在做的就是调用`+`"二元运算符"或```"一元运算符". (2认同)
  • 混乱最喜欢的话题了!我会得到一些爆米花. (2认同)