三次法则 (程序设计)
外观
![本页使用了标题或全文手工转换](http://upload.wikimedia.org/wikipedia/commons/thumb/c/cd/Zh_conversion_icon_m.svg/35px-Zh_conversion_icon_m.svg.png)
三次法则(rule of three)是代码重构的一条经验法则,涉及到当代码片段出现重复时,如何决定是否用一个新的子程序替代之的标准。三次法则的要求是,允许按需直接复制粘贴代码一次,但如果相同的代码片段重复出现三次以上的时候,将其提取出来做成一个子程序就势在必行。马丁·福勒在《重构》一书中介绍了三次法则[1],并认为这一法则是Don Roberts所提出。[2]
在编程中,由于会提高代码维护的难度,直接复制代码段的习惯并不好;具体来说,当有代码片段需要变更时,代码维护者就必须找出程序中所有与之相同的代码片段,并都进行修改,但这一过程易出差错,而且也常会带来许多麻烦。相对的,如果代码只在一个地方出现,修改起来就容易多了。
这一法则在代码量(即行数)较少(甚至只有一行)的时候还有另一种形式的应用,例如:如果你想调用一个函数,并在调用失败的时候再尝试调用一次,那使用两处调用亦可;但若你想在放弃尝试前至少尝试5次(注意,这里的5符合>=3的要求),那就应该将其写成循环形式,使代码中只有一个调用位置。
诚如Charles Petzold所言,
“ | (出现)三次,又或更多?用个for(循环)吧!(Three or more? Use a for!)[3][4] | ” |
参见
[编辑]- 一次且仅一次(面向对象编程)
参考
[编辑]- ^ 《重构:改善既有代码的设计》(Refactoring: Improving the Design of Existing Code), 马丁·福勒著, ISBN 978-0201485677
- ^ Refactoring Patterns: 第一部分[永久失效链接], IBM DeveloperWorks(中文)
- ^ Page Transitions in Windows Phone 7, Charles Petzold(英文)
- ^ Does Visual Studio Rot the Mind?, Charles Petzold(英文)