三次法则 (程序设计)

✍ dations ◷ 2025-05-21 04:59:15 #计算机编程,经验法则

三次法则(rule of three)是代码重构的一条经验法则,涉及到当代码片段出现重复时,如何决定是否用一个新的子程序替代之的标准。三次法则的要求是,允许按需直接复制粘贴代码一次,但如果相同的代码片段重复出现三次以上的时候,将其提取出来做成一个子程序就势在必行。马丁·福勒在《重构》一书中介绍了三次法则,并认为这一法则是Don Roberts所提出。

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

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

诚如Charles Petzold(英语:Charles Petzold)所言,

相关

  • 新盘古大陆新盘古大陆(Novopangea,Novo-是来自拉丁语的字首,代表“新”的意思)是一个未来可能出现的超大陆,由现在任职于剑桥大学的罗伊·利弗莫尔(Roy Livermore)于1990年代晚期提出。他的假
  • Beclometasone dipropionate贝克每松(Beclometasone dipropionate),是一种类固醇类药物,为一种糖皮质素,常见商品名为Qvar。 此药物作为吸入器的药粉、乳霜、药片以及鼻喷剂。 吸入器药粉常用于治疗长期的气
  • 香味、香气气味是人类嗅觉系统对散布于空气中的某些特定分子的感应。人们把使人愉快的气味称为香味,把使人不快的气味称为臭味。人类大概能识别1000种不同的气味。气味分子进入鼻孔后,会
  • 垂直平分线垂直平分线,或称中垂线,指一垂直于某个线段且经过该线段中点之直线。两个成轴对称的点连成的线段被其对称轴垂直平分。中垂线亦可成为平角的角平分线。分别以该线段两端点为圆
  • 捷克参议院捷克共和国议会参议院(捷克语:Senát Parlamentu České republiky)是捷克两院制议会的上议院,地址位于布拉格的华伦斯坦宫。议院由81名议员组成,在单议席选区根据两轮选举制选
  • 艾玛·沃森《哈利·波特》系列电影《美女与野兽》艾玛·夏洛特·杜尔热·沃森(英语:Emma Charlotte Duerre Watson,1990年4月15日-),英国女演员、模特儿兼社会活动家。她生于法国巴黎,在英格
  • 伍长和平期间罕见军事强国有实力编制普通国家有实力编制伍(英语:Fireteam)是军队的编制单位,在班以下,一般约三到五人为一伍,多以资深或能力优异的士兵(上等兵)拔擢为伍长(准下士)。通常伍
  • 5-HT2受體5-HT2受体(5-HT2 receptors)属于5-羟色胺受体家族的一个次家族,可与内源性神经递质血清素结合(5-羟色胺)。5-HT2次家族包含三种G蛋白偶联受体,可与Gq/G11(英语:Gq protein)结合并调
  • 博日山脉博日山脉(法语:Massif des Bauges)是法国的山脉,位于该国东部隆河-阿尔卑斯,是法国前阿尔卑斯山脉的一部分,最高点海拔高度2,217米,山体由沉积岩组成。坐标:45°38′N 6°10′E / 45
  • 宜万铁路.mw-parser-output .RMbox{box-shadow:0 2px 2px 0 rgba(0,0,0,.14),0 1px 5px 0 rgba(0,0,0,.12),0 3px 1px -2px rgba(0,0,0,.2)}.mw-parser-output .RMinline{float:none