三次法则 (程序设计)

✍ dations ◷ 2025-12-03 09:02:37 #计算机编程,经验法则

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

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

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

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

相关

  • SSCP单链构象多态性(英语:single-strand conformation polymorphism,简称为SSCP)是一种分离核酸的技术,可以分离相同长度但序列不同的核酸(性质类似于DGGE和TGGE,但方法不同)。在非变性
  • 环青海湖国际公路自行车赛环青海湖国际公路自行车赛简称“环青海湖”,从2002年开始举办,每年的6至8月间在青海省的环青海湖地区和邻近的甘肃省及宁夏回族自治区举行。经国际自行车联盟批准,环湖赛为2.HC
  • 栗本薰栗本薫(1953年2月13日-2009年5月26日),日本女性小说家、评论家。以中岛梓的名义发表评论、作词、作曲、钢琴演奏、音乐剧剧本、演出。本名今冈纯代,旧姓山田。代表作有《豹头王传
  • 内陆地区圣迭戈县(英语:San Diego County)又译圣地牙哥县、圣地亚哥县是美国加利福尼亚州最南部的县,南邻墨西哥下加利福尼亚州。总面积11,721平方公里,根据2000年人口普查数字,共有人口30
  • 摩西湖市摩西湖市(Moses Lake)位于美国华盛顿州格兰特县。美国2010年人口普查时人口为20,366人。摩西湖市是格兰特郡最大的城市。摩西湖市有一个姊妹市:摩西湖市与米泽市之间有很长的历
  • 原始反射原始反射(英语:Primitive reflexes),是指一类婴儿(而非神经完整的成年人)能够表现出来的、由中枢神经系统产生的正常生理反射行为,其反应类型能够响应特定的刺激。这些反射会随着儿
  • 永恒九月永恒九月也叫永无止境的九月,是一个Usenet俚语,指一段自1993年9月开始的时期,由戴夫·费舍尔创造。这一表述代表了一种观点,认为自那时起新用户(菜鸟)们的涌入持续地降低了Usenet
  • 岩下志麻岩下志麻(日语:岩下 志麻、1941年1月3日-),日本女演员,本名是篠田志麻,出生于东京府东京市京桥区(东京都中央区)银座。岩下志麻是松竹招牌女演员,丈夫是电影导演篠田正浩,父亲是野野村
  • 扎尼斯·佩内斯扎尼斯·佩内斯(拉脱维亚语:Žanis Peiners,1990年8月2日-),拉脱维亚篮球运动员,现在效力于拉脱维亚篮球联赛球队BK Ventspils。他也代表拉脱维亚国家篮球队参赛。
  • 山墙山墙是建筑两个侧面上部成山尖形的横墙,也称作规壁、鹅头、栋头、圆仔头、归壁、大规壁,而“规”字是指弧形的曲线。此外日本史学家藤岛亥治郎在其《台湾の建筑》一书中将这种