三次法则 (程序设计)

✍ dations ◷ 2025-06-13 21:02:15 #计算机编程,经验法则

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

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

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

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

相关

  • 非正式经济灰色经济,又称黑市场、地下经济、影子经济,一般是指一种在国民经济中未向政府申报登记,而经济活动脱离政府法律法规约束,又不向政府纳税的经济成分。又可指逃避政府的管制、税收
  • 喷雾喷雾是喷入气体中的大量液滴。形成喷雾的过程称为喷雾化。喷雾喷嘴可以用来产生喷雾。喷雾的两个主要用途是在界面上分布材料以及产生具有液态表面的区域。在数千种应用中,喷
  • 黑色星期一2020年黑色星期一是指由于2019冠状病毒病疫情及2020年俄罗斯–沙特阿拉伯石油价格战等因素,造成的两次发生于星期一的股市崩盘:
  • 佛罗伦萨美术学院坐标:43°46′37″N 11°15′31″E / 43.776907°N 11.258475°E / 43.776907; 11.258475佛罗伦萨美术学院(Accademia delle Belle Arti di Firenze)是意大利佛罗伦萨的美术学
  • Eisai Co.▲ US$ 5.82 billion (财政年度 2013) (▲ US$ 320 million(FY 2013) (JPY 33 billion)(FY 2013)卫材株式会社(エーザイ株式会社,Eisai Co., Lt
  • 高飞高飞(1976年-),江苏南通人,中华人民共和国企业家、乐视视频总裁。1995年,考入北京大学经济学院,获得国际经济、国际贸易专业学士。毕业后加入大唐电信科技股份有限公司。2002年9月,
  • 亚庇亚庇国际机场(英语:Kota Kinabalu International Airport;马来语:Lapangan Terbang antarabangsa Kota Kinabalu;IATA代码:BKI;ICAO代码:WBKK),简称亚庇机场,位于马来西亚沙巴州亚庇市
  • 1,1-二氟乙烷5.1 bar/510 kPa @ 20 °C1,1-二氟乙烷,又称DFE,是一种有机氟化合物,化学式 C2H4F2。它是一种无色气体,被用来冷冻。商品名为R-152a 或HFC-152a 。相较其它氟氯烃,它没有臭氧破坏
  • 申性模申性模(韩语:신성모,1891年10月20日-1960年5月29日),韩国政治人物,历任内务部长、国防部长、代总理。1891年生于庆尚南道宣宁。普成专科学校毕业后曾参加己未运动。1910年日韩并合,
  • 正义旗手正义旗手(意大利语:Gonfaloniere di Giustizia)是中世纪佛罗伦萨共和国政府的职位,为市政会负责人,兼任军队总指挥。正义旗手除拥有投票权外,亦负责维持城市秩序。1293年,贾诺· 德