Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Perl 为什么分号前加空格不好?_Perl_Coding Style - Fatal编程技术网

Perl 为什么分号前加空格不好?

Perl 为什么分号前加空格不好?,perl,coding-style,Perl,Coding Style,pod状态 分号前没有空格 我看不出有什么理由。我知道在英语中,由两部分组成的字符(如“?”、“;”、“!”)前不应该有空格,但我不明白为什么在编写Perl代码时应该有这样的规则 我承认我个人在分号前使用空格。我的理由是,这使声明更加清晰。我知道这不是一个很强的理由,但至少这是一个理由 print "Something\n with : some ; chars"; # good print "Something\n with : some ; chars" ; # bad?? 第二个坏的原因

pod状态

分号前没有空格

我看不出有什么理由。我知道在英语中,由两部分组成的字符(如“?”、“;”、“!”)前不应该有空格,但我不明白为什么在编写Perl代码时应该有这样的规则

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

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

第二个坏的原因是什么?

来自描述部分的第一段:

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

从描述部分的第三段:

关于代码布局的美学,Larry非常关心的唯一一件事是,多行块的右括号应该与开始构造的关键字对齐。除此之外,他还有其他不那么强烈的偏好:

这只是Perl程序员对风格的一种约定。如果你不喜欢它,你可以选择忽略它。我会把它比作或。有些环境有自己的指导原则。这些恰好是对Perl的建议

关于这个问题:

如果你乐于与其他人的喜好不一致,那么就用可读性最强的形式来写吧。如果您可能与其他人共享您的代码,特别是如果他们也会提供代码,那么尝试一致的风格是值得的

这不是规则,这是拉里·沃尔的风格偏好之一。样式首选项是关于如何帮助您和其他将在视觉上维护代码的人快速准确地吸收信息

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


然而。

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

当你所做的事情与世界上其他人所做的事情大不相同时,这种差异对其他人来说是显而易见的,因为他们的大脑看事情的方式不同。相反,做事情的方式不同会让你更难阅读其他人的代码,原因也是一样的:你看不到你期望的视觉模式

我的标准是避免视觉混乱,我应该看到背景的孤岛。任何突出的东西都会引起注意(正如你所说的),但我不需要提请大家注意我的语句分隔符,因为我通常每行只有一个语句。我不需要看到的任何东西都应该淡入视觉背景。我不喜欢分号突出。对我来说,分号是一个小问题,我想减少我眼睛视为不同组的东西的数量。

有时标点符号很重要,我希望标点符号突出,在这种情况下,分号需要避开。我经常使用条件运算符,例如:

my $foo = $boolean ?
            $some_long_value
                  :
            $some_other_value
                  ;
如果你是一个新的程序员,输入那个该死的语句分隔符可能是你生活中的一大痛苦,但你的痛苦会随着时间的推移而改变。稍后,你选择的减轻痛苦的风格时尚会变成痛苦。你最终会习惯语法。更好的问题可能是,为什么它们还没有脱颖而出?如果你正在使用一个好的程序呃字体有更重更大的标点符号面,你可能会更容易看到它们


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

好吧,这是样式,而不是规则。样式规则从定义上说是相当随意的。至于为什么不应该将空格放在分号之前,这只是因为它是这样做的。不仅仅是Perl,而且还有C和所有其他Currand分号语言,回到C和C语言中的新的C,C++,C,JavaScript,java,PHP等等。因为人们不期望它。当你做的时候看起来很奇怪。

< P>就像其他人说的,这是一个问题。f风格,不是一个硬性的规则。例如,我不喜欢用四个空格来缩进。我是一个真正的块级缩进标签/空格来排列东西的程序员,所以我忽略了这一部分

我还需要一个风格的原因。如果你不能清楚地说明你为什么喜欢某个特定的风格,那么这个规则是毫无意义的。在这种情况下,原因是很容易看到的。不需要的空白用于引起注意或使某些内容更容易阅读。那么,分号是否值得额外注意?每个表达式(禁用控制结构)将以分号结尾,并且大多数表达式都在一行上。因此,提请注意预期的情况似乎是浪费程序员的时间和注意力。这就是为什么大多数程序员缩进一行作为表达式的延续,以提请注意它没有在一行上结束的事实:

open my $fh, "<", $file
    or die "could not open '$file': $!";
读起来比读起来容易

foo("bar");
我会提出一个更难理解的说法,因为它让我注意到分号,而我在很大程度上并不关心文件格式是否正确。Perl当然关心,如果我缺少一个分号,它会告诉我。我真的不关心
foo("bar");
; 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
   }