2009-08-12 61 views
13

perlstyle荚状态为什么在分号前放一个空格很不好?

没有空间分号

,我看不出有什么理由之前。我知道,在英语不应该是由两个部分组成的字符之前的任何空间(比如,“?”“;”,“!”),但我不明白为什么写Perl代码的时候,这应该是一个规则。

我承认我以前分号个人使用空格。我的理由是它使得这个陈述更加清晰。我知道这不是一个很强的理由,但至少这是一个原因。

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

第二个坏的原因是什么?

+1

为什么downvotes?这个问题没有错,IMO。 – 2009-08-12 14:54:12

+0

你在做很多javascript吗? – innaM 2009-08-12 15:42:36

+0

嗨,我是匿名空间的新手,在分号之前我喜欢那个空格。我的眼睛很容易解析代码。一个人的肉是另一个人的毒药。好知道我并不孤单,谢谢:) – 2014-08-11 06:57:15

回答

17

从描述部分第一段:

每个程序员,当然有他或她自己的喜好在问候格式,但也有一些一般原则,这将使你的程序更容易阅读,理解和维护。

而且从描述部分第三段:

关于代码美学铺陈,约拉里强烈关心的是,多行数据块的结束花括号应该的嘛与开始构建的关键字对齐。除此之外,他还有其他偏好并不那么强大:

这只是Perl程序员之间风格的惯例。如果你不喜欢它,你可以选择忽略它。我会比较它Sun's Java Style guidelinesthe suggestions for indenting in the K&R C book。有些环境有自己的指导原则。这些恰好是Perl的建议。

至于Jon Skeet said in a deleted answer这个问题:

如果你高兴能与哪些其他一些人喜欢,然后就在最可读的形式为你写的不一致。如果您可能与其他人分享您的代码 - 特别是如果他们也会提供代码 - 那么值得尝试一致的风格。

4

这不是一个规则,这是Larry Wall的风格偏好之一。样式偏好是关于如何帮助您和其他维护代码的人以可视方式快速准确地吸收信息。

我与拉里同意在这种情况下,并找到分号丑陋和破坏性我的阅读过程之前的空间,但其他如自己可能会发现正好相反。当然,我会更喜欢你使用我喜欢的那种风格,但是关于它的书没有任何法律。

呢。

8

这只是我的意见,但我也意识到,人们阅读的代码以不同的方式使“坏”是相对的。如果你是谁曾经看着你的代码的唯一的人,你可以做任何你喜欢的。然而,看过很多Perl代码,我只看到一些人在语句分隔符之前放置空格。

当你做的事情与世界上其他人所做的事情截然不同时,区别于其他人,因为他们的大脑没有以同样的方式看到它。相反,做不同的事情会让你更难以阅读其他人的代码,原因是:你没有看到你期望的视觉模式。

我的标准是避免视觉混乱,我应该看到背景的岛屿。任何突出的东西都会吸引注意力(正如你所说的那样),但是我不需要将注意力集中在我的陈述分隔符上,因为我通常每行只有一条语句。任何我不需要看的东西都应该消失在视觉背景中。我不喜欢分号冒出来。对我而言,分号是一个小问题,我想减少我眼中看到的不同组的数量。

有次在标点符号是很重要的,我想那些脱颖而出,在这种情况下,分号需要得到闪开。我经常这样做与条件运算符,如:

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

如果你是一个新的编码器,输入那个该死的语句分隔符可能是你人生一个很大的痛苦,但你的痛苦会随时间而改变。稍后,您选择减轻一种疼痛的时尚风格成为痛苦。你会习惯最终的语法。更好的问题可能是,为什么他们不能脱颖而出?如果您使用的标准面更大,更大的程序员字体,您可以更容易地看到它们。

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

+3

当庆祝Perl的作者是指条件运算符(http://perldoc.perl.org/perlop.html#Conditional-Operator)为“三元运算符”,它使宝贝骆驼哭了。 – chaos 2009-08-12 14:59:04

+2

当然。 ?:是* a *三元运算符,但是您正在调用'+'“二元运算符”或“!'”一元运算符“。 – chaos 2009-08-12 15:24:59

+2

混乱的最喜欢的话题再次!我会买一些爆米花。 – innaM 2009-08-12 15:48:41

2

嗯,这是风格,不是一个规则。样式规则从定义上来说相当随意。至于为什么你不应该在分号之前加空格,那只是因为这就是它的完成方式。不只是用Perl,但C和所有其他的花括号和-分号语言可以追溯到C和较新的C-影响的像C++,C#,目标C,Java脚本,Java和PHP等

1

因为人别指望它。你做这件事时看起来很奇怪。

+0

那么重要的是谁是这些人谁将会看到的代码。 – ysth 2009-08-13 05:49:07

4

像其他人一样,这是一个风格问题,不是硬性规定。例如,我不喜欢四个空格缩进。我是块级别的缩进/空格的真正标签,用于排列各种程序员的内容,所以我忽略了perlstyle的那一部分。

我也需要一个风格的原因。如果你不能清楚地陈述你为什么喜欢给定的风格,那么这个规则是毫无意义的。在这种情况下,原因很容易看到。不需要的空白用于唤起对某事的注意或使某些事情更易于阅读。那么,分号应该得到额外的关注吗?每个表达式(禁止控制结构)都以分号结尾,大多数表达式都适合一行。因此,提请注意预期的情况似乎浪费了程序员的时间和精力。这就是为什么大多数的程序员缩进一行是一个表达式的延续,以提醒人们注意这样的事实,它并没有在一行结束:

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

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

foo("bar") ; 

更容易比

foo("bar"); 

读我会提出索赔是难以阅读,因为它是叫我注意分号,而我,在大多数情况下,不如果文件格式正确,请关注分号。当然Perl关心,如果我错过了它会告诉我它。

0

我真的不喜欢它。但这是100%的个人决定和小组大会必须制定的。

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

+3

Aaaaarghhhhhhh!该行开头的逗号和分号意味着风格的战争! ;-) – 2009-08-12 15:05:57

+2

哇。那块阻止了我的眼睛流血。在行末,我也习惯了分号的标准惯例。如果我继承了这样的代码,我可能只是蜷缩成一个球并哭了一会儿,哈哈。 – Eric 2009-08-13 05:58:12

+0

到救援副本的链接已损坏。 – MetaEd 2018-03-07 22:18:18

0

代码风格仅仅是一套规则,使阅读和维护代码更容易。 没有真正的坏风格,但有些比其他人更容易接受。他们当然是一些“宗教战役”的来源(称为花括号风格;-))。

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

1

我想举的原因是要在项目中保持一致。我一直在一个项目中,大多数程序员不会插入空间,但只有一位程序员。如果他在缺陷上工作,他可能会在他正在检查的代码行中按常规添加空格,因为这是他喜欢的,并且风格指南中没有任何内容可以说明。在使用

的视觉差异的工具不能确定这使展会的时候只有一个可能已经改变线路的质量变化,变得难以审查。 (好吧,这可能是一个更好的差异工具的参数,但嵌入式工作往往会限制工具选择)。

也许这个合适的指南是选择你想为你的分号,但除非你修改语句本身不改变别人取其格式。

相关问题