三次法则 (程序设计)

✍ dations ◷ 2025-02-23 20:11:15 #计算机编程,经验法则

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

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

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

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

相关

  • 酮症酮症是一种代谢状态,当体内的葡萄糖不足时,肝脏会将脂肪转换成脂肪酸与酮体,取代原本由葡萄糖负责的能量来源。当血中酮体的含量大于0.5mM,且有长时间的低血糖及低胰岛素含量,即
  • 1341年
  • 等离子体灯等离子灯是一种装饰性的灯,在1980年代最为流行,商品名又名辉光球。等离子灯由物理学家尼古拉·特斯拉发明,他做了一个实验,在玻璃电子管通以高频率的电流,来研究高电压现象。特斯
  • 艾萨克·布洛克艾萨克·布洛克爵士(Sir Isaac Brock,1769年10月6日-1812年10月13日),英国陆军少将。1812年战争初期,他在上加拿大地区击退美军的进攻,并发动反击攻入美领五大湖地区,在8月中旬的底
  • 苏联解体的预言有部分人和组织预测,苏联将在1991年前解体。有一部分政治家,如中国政治家邓小平、一部分苏联学者、美国学者布热津斯基,如邓小平曾经在1989年说,“东欧的事情”迟早会发生。。在
  • 瑟凯福尔维-纳吉·贝洛瑟凯福尔维-纳吉·贝洛(匈牙利语:Szőkefalvi-Nagy Béla,1913年7月29日-1998年12月21日),出生于克卢日-纳波卡,匈牙利数学家。他的父亲瑟凯福尔维-纳吉·久洛也是一位著名的数学家
  • 英格兰饮食英格兰饮食(英语:English cuisine)是指英格兰的饮食文化。英格兰饮食有其独特的特征,并且在大英帝国时代受到北美、中国、印度等地进口食材的影响。英格兰具代表性的街头食品包
  • 趋磁性趋磁性是指趋磁细菌利用地磁场,进行定向和运动协调的运动模式。能进行趋磁过程的菌种,主要包括生活在盐碱滩,海水以及淡水湖泊中的微好氧菌和厌氧菌。具有趋磁性的细菌通过趋磁
  • 静音飞机计划静音飞机计划(Silent Airplane Initiative, SAI)是一个由剑桥-麻省理工研究院(英语:Cambridge-MIT Institute)发起的研究,其目的是寻找方法以极大地减少飞行噪音(英语:aircraft nois
  • K先生《K先生》(韩语:스파이,韩语片名来自英语“spy”)是一部2013年上映的韩国喜剧谍报片,讲述顶级间谍在执行任务时,无意间把不知道自己间谍身份的妻子卷入当中的故事。在片中饰演夫妻