三次法则 (程序设计)

✍ dations ◷ 2025-11-11 05:32:24 #计算机编程,经验法则

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

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

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

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

相关

  • 墨西哥湾沿岸地区墨西哥湾沿岸地区(Gulf Coast)是由濒临墨西哥湾的美国的五个州所组成的,其中包括德克萨斯州、路易斯安那州、密西西比州、阿拉巴马州以及佛罗里达州。因为其经济活动的繁荣以及
  • 阿利库迪岛阿利库迪岛是意大利的火山岛,位于西西里岛以北的提雷尼亚海,属于埃奥利群岛的一部分,长2.9公里、宽2.3公里,面积5.2平方公里,最高点海拔高度675米,2001年人口105。
  • 观察性研究观察性研究为流行病学及统计学中的一种研究方法,又称非实验性研究或对比研究。该研究通过对研究对象在自然状态下根据特定的特征分组后进行观察、记录,并对结果进行描述和对比
  • 美国儿童与青少年精神病学会美国儿童与青少年精神医学会(英语:American Academy of Child and Adolescent Psychiatry、AACAP)是一个总部设在美国华盛顿哥伦比亚特区的非营利专业技术协会,致力于提倡儿童与
  • SAMPA音标字母评估法(SAMPA)是一种电脑可读的音标符号,它是以国际音标为基础,并且只使用7位元ASCII中的可打印符号。这种转写法是源自欧洲共同体为六种欧洲语言,于1980年代展开的欧洲
  • 嗜中性白血球低下嗜中性白血球低下症(Neutropenia 或 Neutropaenia),亦称中性粒细胞减少症,是血液中的一种中性粒细胞(一种白血球细胞)浓度异常低的血液系统疾病,中性粒细胞弥补大多数的循环白血球,
  • .mw-parser-output ruby>rt,.mw-parser-output ruby>rtc{font-feature-settings:"ruby"1}.mw-parser-output ruby.large{font-size:250%}.mw-parser-output ruby.larger{fon
  • 西兰公国坐标:51°53′40″N 1°28′57″E / 51.89444°N 1.48250°E / 51.89444; 1.48250面积国家领袖立国历史西兰公国(英语:Principality of Sealand)是一个未被广泛国际承认的微国家
  • 405号州际公路405号州际公路(英语:Interstate 405, I-405),是5号州际公路在三个不同州、但号码相同的辅助线:
  • 寄奴花科寄奴花科又名柔毛小花草科、旱生草科或漠茸草科,只有1属1种,是单种科,只生长在澳大利亚的西南部,是当地的特有种。本科植物是一年生草本,单叶丛生,有毛和腺点,稍肉质;花小,花瓣5;果实