Perl 格言
上一篇 / 下一篇 2007-09-30 00:59:18 / 个人分类:自动化测试
[转自http://tracer.bokee.com/2273111.html]51Testing软件测试网+z~3I^xt
熟悉文档,从中能够发现任何事物
n/R-Z(h#wEsQ0开始运用perl文档,输入perldoc perl
%k|cK'r` gx0先了解你自己,那样才能更好的了解程序
nA'Z.z iCcL0用向前进的动力,而不是用想逃避的问题去激励自己51Testing软件测试网)zl"M#Cv o$q
如果不能表达为自然语言,就不能用perl进行描述
:G2xU"SX ?9KP0每一个项目都采用同样的风格
st9E!Hw }Q0对于比较难注释的部分,用POD注释51Testing软件测试网 t)f h}/A
尽量使声明的变量更易理解51Testing软件测试网,C*[Z1|'B#IC"X
在所有的程序中使用 -w 和 use strict
*q&o"[d4@8?GD0使用 use diagnostics 解释出错信息51Testing软件测试网YO8|f$y2\
尽可能在最里层创建变量51Testing软件测试网-[l,`,uWpR*@ p
如果有很多同一个 $_ 实例的显式引用,就可以用命名的变量代替
@}2v#D&g6k0当使用while循环设置了$_时,如果$_可能被用于其它地方,那就先保存它51Testing软件测试网U"b$_I)Pe9[ru
当函数应该带参数而没有带的时候,在函数的后面加上空括号51Testing软件测试网1SCf |W+^y uC }+@
当优先级不明确的时候使用括号;括号不会破坏运算符的优先级51Testing软件测试网ml sWF ^*J
在检测较低级键值存在之前,如果较高键值可能不存在,就先检测较高键值是否存在
&YTkct.?8d#M0在进一步开发程序之前,消除所有可能产生警告信息的因素
7S4I5b_l0`2yB0在早期阶段就声明子程序,避免子程序与Perl的内置函数冲突,或者使用&调用自定义的函数
0f _6x9@ i:j0不要把数组传递给那些通常需要标量的内置函数
1M? @O-g~8fq I0不要指望循环变量在循环结束后保留它的值;如果确实需要它们,直接保存它们51Testing软件测试网7Q SQpC
采用Data::Dumper模块打印任何变量或层次结构数据的格式化数据51Testing软件测试网4h*ee#E5w{+uor
选项尽可能设置到最方便的输入界面51Testing软件测试网3pO+q{.a,Ml
通过单行检测可以构造小代码的原型
0P.twz~2[W0通过检查散列的引用,而不是检查散列本身,调试器可以以更友好的格式输出51Testing软件测试网(y _M%yvVZ.O
用户程序中的语法错误可能不仅仅发生在Perl提示的行中,它可以在这一行之前的任一行中51Testing软件测试网7U~uq6[/{
只处理Perl返回的第一个出错信息,不管其他的,然后进行编译51Testing软件测试网5bw$Cs ^O!S7{
不要从一个程序的不同地方进入相同的文本并指望使它们保持同步
8zg DT'P+i0尽量使错误在编译时出现而不是在运行时出现51Testing软件测试网+`.h*YFN%i"Et
了解你的操作系统51Testing软件测试网;l)l&?*u \m[
通过捕获异常并合理地对其进行处理来增强程序的防错能力51Testing软件测试网YkOvl)F6e^
readir()返回目录中的文件名列表,但是目录本身并没有将这些文件名合法化51Testing软件测试网o%L V6m*`;G#F
Deparse模块通常能够解释Perl是如何分析您的代码的
$vbi/|y"b8l0千万不要用条件去限制my语句51Testing软件测试网@G1[c9Hwy$fa
首先对代码进行可读性与可维护性的优化;对其性能的优化在需要进行优化的工作版本成形后进行
\"^Wkn)}0利用Benchmark模块比较不同代码策略下的相对速度51Testing软件测试网u!w~ F1lI
利用Devel::DProf模块找到程序的“瓶颈”所在
9o'Dn2jc O1S(?0在进行循环的时候,应该尽快的结束循环
;O"aGH(Mw"E5wt0带有通用参数的Memoize函数调用
4`/y5~|KI8x^0尽可能利用Perl的内部函数而不是调用外部程序
qp6?H.aJP0不要生成不必要的列表
)O,q"e i'@7yN5`;\&\/bM0避免不必要的拷贝操作51Testing软件测试网+hr*eo7?n;d
避免临时文件51Testing软件测试网Oy.l bt
利用Exporter把一系列普通常量放入模块中,并在需要的地方调用模块
5uP+i+rC0如果有可能,在您正在开发的Web服务器上得到一个交互式的登录。如果办不到,考虑采用其他的服务方式