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

写在篇首:

--------------------------------------------------------------------------------------

此系列是Perl Best Practices的学习节选!

有兴趣的朋友可以使用邮箱和我沟通!(非常欢迎你的交流)

我的邮箱: veic_2005#163.com(把#替换为@)

------------------------------------------------------------------完美的分割线---

第一章:最佳实践

1.1三个目标

良好的编码风格可以降低软件项目的成本。

1.1.1 强健

l        编码风格可以让初次犯错误的机会减到最小。

l        编码风格有助于检查出不正确的边界情况(edge case),而边界情况正是缺陷时常隐身之处。

l        编码风格可协助你避开无法适当伸缩的构件(construct)。

l        编码风格可以改善程序代码如何处理失败。

l        编码风格可以改善程序代码如何应对失败。

l        编码风格可以改善程序代码的结构。

1.1.2 效率
1.1.3 可维护性

通常来讲,维护程序代码的时间至少是编写程序代码的4倍以上。(注1)

注维护成本和最初开发成本是4:1的结果通常被称为贝姆定律(Boehms’Law)。过去30年来,不断在真实世界中观察到维护比开发更具主控优势,不过,实际成本比例从2:1到大大超出的10:1的都有

在你完成代码的6个月后,程序代码就像别人编写的一样(注2)

注这是伊格尔森定律(Eaglesons’ Law)。其他专家痛苦地断言,关键时间间隔大约是3周。

时间: 2024-12-05 18:59:36

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

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 最佳实践(节选) --- 18

第十八章:测试和调试 贰贰柒. 先写测试案例. 贰贰捌. 以Test::Simple或Test::More把你的测试案例标准化. 贰贰玖. 利用Test::Harness将你的测试集标准化. 贰叁零. 编写失败的测试案例. 贰叁壹. 可能的和不可能的都要经过测试. 贰叁贰. 开始测试前先增加新的测试案例. 贰叁叁. 一定要使用use strict. 贰叁肆. 一定要显式地开启警告功能. 贰叁伍. 绝不要假设编译期间没有警告就意味着正确. 贰叁陆. 显式而选择性地关闭责难(stricture)或警

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放在靠近文件末尾处. 零捌肆. 对技术说明文档做适当的细化. 零玖零. 主要注释应使用块模板. 零玖壹. 使用整行注释来说明算法. 零玖贰. 使用行尾注释来指出微妙之处和奇怪之处. 零玖叁. 对任何让你困惑或受骗