三次法则 (程序设计)

✍ dations ◷ 2024-12-23 01:33:48 #计算机编程,经验法则

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

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

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

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

相关

  • 卵胎生卵胎生,又称半胎生,是指体内受精的动物(珊瑚、鱼类、两生类等),受精卵留在母体内,发育时所需营养仍依靠其蛋黄,最后再以胎儿的形式生产。卵胎生指的是“体内孵卵”的意思,也就是说
  • 隐性基因隐性遗传(Recessive trait)是一种基因遗传中的情况,表现为在遗传过程中,某个基因的性状并不显现出来,而有可能“隐藏”于基因内,除非来自父母双方的基因都给子代遗传了此基因的
  • 王 水王水(1942年4月12日-),空间物理学家。生于江苏南京。1961年毕业于南京大学气象系。1993年当选为中国科学院院士。中国科学技术大学教授,中国地球物理学会理事长。曾任中国科技大
  • 半球半球或半球体有以下含意:
  • 芝加哥公牛芝加哥公牛(英语:Chicago Bulls),是一支位于美国伊利诺伊州芝加哥的NBA职业篮球队,分属于东部的中部赛区,主场为联合中心球馆。芝加哥的畜牧业非常发达,该城的职业美式足球队(芝加哥
  • 老司城坐标:28°59′47″N 109°58′20″E / 28.99639°N 109.97222°E / 28.99639; 109.97222老司城遗址是一处位于中国湖南省西北湘西土家族苗族自治州永顺县灵溪镇灵犀河畔的土
  • 亚历山大·尼古拉耶维奇·波斯克列贝舍夫亚历山大·尼古拉耶维奇·波斯克列贝舍夫(俄语:Александр Николаевич Поскрёбышев,1891年8月7日-1965年1月3日),苏联政治人物。波斯克列贝舍夫出生
  • 袁联清袁鎏(1844年-20世纪?),字联清,以字行称袁联清,祖籍浙江省慈溪县,生于镇海县,清末民国金融家、实业家、银行家,清末民国上海银行业领袖之一,曾参与创立上海第一个钱业公会。早年在上海从
  • 松井咲子松井咲子(日语:松井 咲子,1990年12月10日-)是日本女艺人暨钢琴演奏家,为女子偶像团体AKB48前成员。出身于埼玉县蕨市,东京音乐大学中途退学,后就读于桐朋学园艺术短期大学艺术科专攻
  • 频域分辨光学开关频域分辨光学开关是一种用于测量超短激光脉冲的通用方法,测量脉冲的时间尺度可从亚飞秒到纳秒。测量超短脉冲在早先很难实现,这是因为一般来说,测量一个事件,需要一个更短时间尺