三次法则 (程序设计)

三次法则（rule of three）是代码重构的一条经验法则，涉及到当代码片段出现重复时，如何决定是否用一个新的子程序替代之的标准。三次法则的要求是，允许按需直接复制粘贴代码一次，但如果相同的代码片段重复出现三次以上的时候，将其提取出来做成一个子程序就势在必行。马丁·福勒在《重构》一书中介绍了三次法则《重构：改善既有代码的设计》(Refactoring: Improving the Design of Existing Code), 马丁·福勒著, ISBN 978-0201485677，并认为这一法则是Don Roberts所提出。Refactoring Patterns: 第一部分, IBM DeveloperWorks

在编程中，由于会提高代码维护的难度，直接复制代码段的习惯并不好；具体来说，当有代码片段需要变更时，代码维护者就必须找出程序中所有与之相同的代码片段，并都进行修改，但这一过程易出差错，而且也常会带来许多麻烦。相对的，如果代码只在一个地方出现，修改起来就容易多了。

这一法则在代码量（即行数）较少（甚至只有一行）的时候还有另一种形式的应用，例如：如果你想调用一个函数，并在调用失败的时候再尝试调用一次，那使用两处调用亦可；但若你想在放弃尝试前至少尝试5次（注意，这里的5符合>=3的要求)，那就应该将其写成循环形式，使代码中只有一个。

诚如所言，

参见
一次且仅一次（面向对象编程）

参考

Category:编程原则