
February24,20101命名
•不要使用过于简短的变量简写(除非是标准的简写形式),更不要使用如$x、$y等意义不太明确的名称。也不要使用太长的名称。
•用my申明的变量(词法变量)使用小写字母。单词之间用下划线隔开。
•用our申明的变量(全局变量)以及常量(use constant)使用全大写形式。单词之间用下划线隔开。
•数组的引用名前缀a_,hash的引用名前缀h_。
•文件句柄使用全大写形式,保存文件句柄的变量名及引用名使用前缀fh_。•函数名第一个单词使用小写后面的单词使用首字母大写的形式,单词之间不使用下划线。
•模块名(包括类名)每个单词首字母大写,单词之间不使用下划线。
•公有方法名命名规则同函数,私有方法名前缀一个_。
•accessor方法第一个单词分别使用get、set和is,如getColor(), setColor(),isRed()。
1.1布局
•使用单个的tab作为缩进,但在脚本的最后添加
#vim:sw=4ts=4ft=perl
这一行,让tab显示为四个字符宽度。
•使用last的行不使用tab作缩进,使用两个空格。
•{与关键字同行,并在其前面加一个空格。}单独一行,并与相对应的关键字位于同一列。
•只有一条语句的块(blocks)连同语句块的开始结束花括号写在同一行,并且这条语句不用分号结束。
•分号之前不要加空格。
•复杂的下标使用适当的空格。
•用空行隔开处理相关性不大的事务的语句块(chunks)。
•内建函数的调用不使用括号,自定义函数和以模块名为前缀的函数以及方法的调用都要加括号,函数和方法名与括号之间不使用空格。如果使用多个内建函数级联调用,则在适当的函数前后加上空格。
•函数定义在主程序之后,为了避免使用&来调用自定义函数,可以使用前向申明。
•逗号之后都要打空格。
•一行不要太长,控制在70个字符左右。
•比较长的行在操作符之后断行(但在and和or之前断行)。
•垂直对齐相关的条目,据情况左对齐,或以操作符为基准对齐。
•在不影响可读性的情况下尽量去掉不必要的标点。
•在操作符两边都加上空格。
•在while、for、if等关键字后都加上空格。
•使用比较复杂的条件判断的时候,在条件单元之间使用适当的括号。
•条件太长时,在逻辑运算符之后换行,换行后加足够的空格让条件按列对齐。
这时,{放在与条件的最后一行相同的行,之间用空格隔开。比如
if($flag==3){
#do some thing.
}
while(($name==’Larry’)&&
($word==$passwd)){
#do some thing.
}
•为长参数列表加如下形式的注释:foo($name,#person’s name
$address,#where they live
$score);#the score
2语法
•总是使用use strict;。在必要时可以在局部使用no strict;
•总是使用-w选项或者use warnings。在必要时可以在局部使用no warnings;。
•尽量使用select语句为print选择作用作用的文件句柄,不要在print之后接文件句柄。
•在比较复杂的正则表达式后使用/x修饰符,以引入适当的空格。
•正则表达式内含有/时不要用/作分隔符。
•尽量使用and和or而不要使用&&和||,请注意它们的区别。
•使用HERE documents,而不要使用一连串的print语句。
•总是检测系统调用的返回码,并把详细的出错信息写到STDERR,出错信息一定要包含,但不仅只包含$!,比如:
opendir D,$dir or die"Can’t open directory$dir:$!";•多使用FileHandle模块,而不使用open()函数。
•只在短的一次性脚本里使用<>。
•在合适的时候提醒自己使用引用,而不要使用数组或者散列。
•尽量不要使用常量和全局变量,尽量使用my申明的词法变量,不仅仅因为它更快,更重要的是更安全。
•在需要申明变量的时候才申明变量,不要在最开始就把需要用到的变量都全部申明。
•如果函数的参数数目固定,可以考虑使用函数原型,如sub aFun($$)。
3文档•给复杂的正则表达式加上简短的注释。
•在适当的地方给代码片段加上注释。在不便于使用POD文档的地方的注释以一个空行加一行#开头,以一行#(必要时再加一个空行)结束,中间的注释行均以一个#加一个空格开始。
•使用POD格式化你的文档。
•在POD里使用C<>标记函数名,变量以及模块名,甚至任何可被认为是代码的部分。
•在POD里的函数名后加括号。
•使用B<>标记命令,如cat。
•使用F<>标记文件名。
