三次法则 (程序设计)

✍ dations ◷ 2025-07-05 19:25:10 #计算机编程,经验法则

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

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

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

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

相关

  • 塔罗糖塔罗糖(Talose)是一种己醛糖。可溶于水,微溶于醇类,存在于某些植物和细菌中,可由葡萄糖或甘露糖经化学反应制备。用于土壤细菌毒性基因的表达控制研究。果聚糖:菊粉 · 果聚糖β
  • 薄伽丘乔万尼·薄伽丘(意大利语:Giovanni Boccaccio,1313年6月16日-1375年12月21日),文艺复兴时期的佛罗伦萨公国作家、诗人,以故事集《十日谈》留名后世。出生于佛罗伦斯附近(Certaldo),家
  • 卡纽特大王克努特大帝(古挪威语: Knútr inn ríki ,英语:Canute the Great,995年-1035年11月12日),丹麦称克努特二世,英格兰称克努特一世。他继承父亲丹麦国王斯温的王位,对英格兰、丹麦、挪
  • 拉扎克敦阿卜杜勒·拉扎克·侯赛因或敦拉扎克(马来语:Tun Abdul Razak bin Haji Dato' Hussein Al-Haj;1922年3月11日-1976年1月14日)是马来西亚第二任总理,巫统政治人物,有“发展之父”
  • 亨特·海耶斯亨特·伊斯顿·海斯(英语:Hunter Easton Hayes,1991年9月9日-)是美国乡村音乐歌手和词曲作者。在签约至纳许维尔大西洋唱片后于2011年10月发行了首张同名专辑,收录了登上美国乡村
  • 森保圆森保圆(日语:森保 まどか,1997年7月26日-)是日本偶像艺人,为女子偶像团体HKT48Team KIV成员。长崎市出身,所属经纪公司为Mercury。家中有一个弟弟。幼少时开始学习8年钢琴,拥有绝对
  • 2014年冬季残疾人奥林匹克运动会2014年冬季残疾人奥林匹克运动会是第十一届冬季残疾人奥林匹克运动会,于2014年3月7日至16日在俄罗斯索契举办,是首次在俄罗斯举行的残疾人奥林匹克运动会。是届残疾人奥林匹克
  • 罗林森罗林森(英语:Sir Henry Rawlinson, 1st Baronet;1810年4月5日-1895年3月5日),英国军官、东方学家。他成功释读大流士一世的贝希斯敦铭文上面3种文字之古波斯文部分,为释读美索不达
  • 米奇斯拉夫·卡洛维茨米奇斯拉夫·卡洛维茨(波兰语:Mieczysław Karłowicz,1876年12月11日-1909年2月8日),波兰作曲家。先后在华沙和柏林接受音乐教育,1902年回国,大力宣传推广瓦格纳风格的音乐,并与“青
  • 汪乔年汪乔年(?-1642年),字岁星,浙江遂安县(今属淳安县)人。明末政治人物。天启二年(1622年)进士,历官刑部陕西司主事、刑部郎中、工部郎中。崇祯二年,担任山东青州知府,崇祯十一年(1638年)崇祯下