当前位置:首页 » Perl » Perl编程标准

Perl编程标准

Perl编程标准编程在线教程,例子在线教程,参考手册和代码 - 每个程序员都有他自己的喜好格式化的方法,但也有一些通用的准则,会让你的程序更容易阅读,理解和维护。

每个程序员都有他自己的喜好格式化的方法,但也有一些通用的准则,会让你的程序更容易阅读,理解和维护。

最重要的是-w标志在任何时间下运行程序。你可以把它明确地没有任何警告杂注或$^W变量通过特定部分的代码,如果你一定要。你也应该总是运行在使用严格的或知道的原因下,为什么不呢。使用sigtrap ,甚至使用诊断程序的编译指示也可能是有用的。

关于美学的代码布局,的唯一强烈的Larry关心的是,多行块的右大括号排队的关键字开始构建。 除此之外,他还有其他的喜好是没有那么强的:

  • 4空格缩进。
  • 如果可能的话,左大作为关键字在同一行上,否则按顺序。
  • 空格句前花多行块。 
  • 一个行块可以被放在同一行,包括花括号。
  • 不要有空格在分号
  • 在“short”一行BLOCK分号省略。
  • 大多数操作符两边要用空格.
  • 一个“复杂的”下标(括号内)两边要用空格.
  • B块之间空行,做不同的事情。
  • 不要空挂else.
  • 函数名称和左括号之间不要有空格 。
  • 每个逗号后要有空格。
  • 长的行折断后操作员(除了和或(or,and))。
  • 当前行的最后一个括号匹配后空格。
  • 垂直行相应的项(条)目。
  • 只要清晰就不会有麻烦省略多余的标点符号。

这里有一些其他风格更实质性的问题需要考虑:

  • 仅仅因为你能做一些事情并不意味着我应该以一种特殊的方式做。Perl是设计给你几种方法可以做任何事情,所以考虑选择最可读的。例如
  • open(FOO,$foo) || die "Can't open $foo: $!";
    

    是比以下要的好:

    die "Can't open $foo: $!" unless open(FOO,$foo);
    

    因为第二种方式隐藏的修饰符声明的主要观点。另一方面

    print "Starting analysis\n" if $verbose;
    

    明显优于

    $verbose && print "Starting analysis\n";
    

    因为主要的问题不在于用户输入的-v或不是。

  • 不要去愚蠢的扭曲退出循环的顶部或底部,当Perl提供了最后的运算符,这样你就可以在中间退出。“减少缩进”这一点,使之更可见:
            LINE:
            for (;;) {
                statements;
              last LINE if $foo;
                next LINE if /^#/;
                statements;
            }
  • 不要害怕使用循环标记 - 它们以提高可读性以及允许多级循环中断。见前面的例子。
  • 在真空环境中,避免使用的grep()(或map())或`反引号',也就是说,当你抛弃它们的返回值,所有这些功能有返回值使用它们。否则使用foreach()循环或system()函数代替。
  • 对于便携性,使用时无法在每一台机器上实现的功能,测试在一个eval的构建体,看它是否失败。如果你知道是什么版本或最接近的一个特定的功能已实现,可以测试 $] ($PERL_VERSION)去看它是否存在。配置模块还可以让你询问的配置程序安装Perl的时确定的值。
  • 选择助记符标识符。如果你不记得助记符意味着什么,你已经有了一个问题。
  • 虽然短标识符如$gotit,或许没问题,用下划线来分隔单词的较长的标识符。这是通常$var_names_like_this比$VarNamesLikeThis比较容易理解,尤其是对于非英语母语的人。这也是一个简单的规则作用和VAR_NAMES_LIKE_THIS一致
    有时,包名是这个规则的一个例外。Perl非正式保留小写的模块名称为“杂”模块,如整数及严格。其他模块应以大写字母开始,并使用大小写混合,但可能没有强调由于限制在原始文件系统的模块名作为文件必须符合一些稀疏的字节表示的。
  • 如果你有一个真正的复杂正则表达式,使用/x修饰符,并在一些空白,使其看上去不像行噪声。 不要使用斜杠作为分隔符,当你的正则表达式有斜杠或反斜杠。
  • 请务必检查系统调用的返回代码。好的错误消息应该到STDERR,包括哪些程序引起的问题,什么是失败的系统调用和参数, (非常重要)标准的系统错误消息应包含什么地方出了错。这里有一个简单但足够的例子:
  • opendir(D, $dir)     or die "can't opendir $dir: $!"; #by www.gitbook.net
    
  • 想想可重用性。为什么要浪费脑力上的一个一次性时,你可能想再次做类似的东西吗?概括你的代码。考虑写一个模块或对象类。考虑使你的代码干净,使用严格的警告和使用(或-w)有效运行。考虑放弃你的代码。考虑改变你的整个世界观。试想一下......哦,没关系。
  • 是一致的。