Perl 最佳实践(节选) --- 18

第十八章:测试和调试

贰贰柒.

先写测试案例。

贰贰捌.

以Test::Simple或Test::More把你的测试案例标准化。

贰贰玖.

利用Test::Harness将你的测试集标准化。

贰叁零.

编写失败的测试案例。

贰叁壹.

可能的和不可能的都要经过测试。

贰叁贰.

开始测试前先增加新的测试案例。

贰叁叁.

一定要使用use strict。

贰叁肆.

一定要显式地开启警告功能。

贰叁伍.

绝不要假设编译期间没有警告就意味着正确。

贰叁陆.

显式而选择性地关闭责难(stricture)或警告(warning),

而且是在最小可能作用域内。

贰叁柒.

至少学习perl调试器的子集功能。

贰叁捌.

“手动”调试时要使用序列化的警告。

贰叁玖.

调试时考虑使用“聪明注释”,而不是warn语句。

时间: 2024-12-22 02:24:42

Perl 最佳实践(节选) --- 18的相关文章

Perl 最佳实践(节选) --- 01

写在篇首: -------------------------------------------------------------------------------------- 此系列是Perl Best Practices的学习节选! 有兴趣的朋友可以使用邮箱和我沟通!(非常欢迎你的交流) 我的邮箱: veic_2005#163.com(把#替换为@) ------------------------------------------------------------------完

Perl 最佳实践(节选) --- 04

第四章:值和表达式 数据是缺乏生气的-- 有点像程序员. - Arthur Norman 零叁叁. 只对实际会插入的字符串使用插入用字符串界定符. l        创建字符串直接量而且想插入变量,使用双引号括住的字符串 my $spam_name = "$title$first_name $surname"; l        创建字符串直接量而且不想插入任何变量,使用单引号括住的字符串 my $spam_name = 'DrLawrence Mwalle'; l        如果

Perl 最佳实践(节选) --- 03

第三章:命名惯例 零贰叁. 构成标示符时要使用文法模板. l        变量以名词命名,前面不加或再加上多个形容词: variable → [adjective _ ]* noun l        hash和数组: look-variable → [adjective _ ]* noun preposition 零贰肆. 根据相关测试替布尔值命名. 零贰伍. 把存储引用的变量标上_ref后缀. 零贰陆. 数组以复数命名,而散列以单数命名. Perl有可用的格式化工具:perltidy. 网

Perl 最佳实践(节选) --- 17

第十七章:模块 贰壹柒. 先设计模块的接口. 贰壹捌. 把原有代码变成inline. 把重复的代码放到子程序. 把重复的子程序放到模块. 贰壹玖. 使用三部分式的版本编号. 贰贰零. 程序化地实施你的版本需求. 贰贰壹. 明智地导出且只在可能场合有请求时才导出. 贰贰贰. 考虑以声明方式导出. 贰贰叁. 不要把变量变成模块接口的一部分. 贰贰肆. 自动建立新模块框架. 贰贰伍. 尽可能使用核心模块. 贰贰陆. 可行时就使用CPAN模块. 第十八章:测试和调试 贰贰柒. 先写测试案例. 贰贰捌.

Perl 最佳实践(节选) --- 02

第二章:代码部署 零零壹. 以K&R风格表示大括号和小括号. 即: my @name = ( 'Damian', 'Matthew' ); for my $name (@names) { formy $word ( anagrams_of(lc $name) ) { print"$wor\n"; } } 零零贰. 控制关键字和后继开口括号间要以空白分割 例如: formy $result (@results) { print_sep(); print$result; } whi

Perl 最佳实践(节选) --- 12

第十二章:正则表达式 正则表达式就是子程序.就是文本匹配子程序. 壹肆伍. 一定要用/x标记. 壹肆陆. 一定要用/m标记. 壹肆柒. 以\A和\z作为字符串边界锚点(anchor). #删除前后空白-- $text=~ s{\A \s* | \s* \z}{}gxm; 壹肆捌. 使用\z表示"字符串末尾",不要用\Z. Perl提供\z标示符号的变形版本:\Z.但是,小写\z是指"匹配字符串末尾",而大写\Z是指"匹配可有可无的换行字符,然后是字符串末尾

Perl 最佳实践(节选) --- 06

第六章:控制结构 零陆贰. 使用代码块if,不要使用后缀if. 例如,下面的就不好理解: $sum+= $measurement if defined $measurement; 其实,它等于: if(defined $measurement) { $sum+= $measurement; } 零陆叁. 后缀if要保留给流程控制语句. 零陆肆. 不要使用unless.for.while.until作为后缀. 零陆伍. 绝对不要使用unless或until. 零陆陆. 避免C风格的for语句. 零

Perl 最佳实践(节选) --- 13

第十三章:错误处理 壹陆玖. 要抛出异常,不要返回特殊值或设定标记. 壹柒零. 让失败的内置函数也抛出异常. 壹柒壹. 让所有上下文中的失败都是致命失败. #把不可接受的失败行为改为抛出异常 -- useFatal qw( :void locate_and_open); #稍后 -- formy $filename () { my$fh = locate_and_open($filename); my$head = load_header_from($fh); print$head; } 壹柒贰

Perl 最佳实践(节选) --- 07

第七章:说明文档 零捌肆. 区分用户说明文档和技术说明文档. 零捌伍. 替模块和应用程序创建标准POD模板. 零捌陆. 把你的标准POD模板予以扩展和自定义. 零捌柒. 在源代码文件中放置用户说明文档. 零捌捌. 把所有用户说明文档放在源代码文件中的单独的地方. 零捌玖. 尽可能把POD放在靠近文件末尾处. 零捌肆. 对技术说明文档做适当的细化. 零玖零. 主要注释应使用块模板. 零玖壹. 使用整行注释来说明算法. 零玖贰. 使用行尾注释来指出微妙之处和奇怪之处. 零玖叁. 对任何让你困惑或受骗