三次法则 (程序设计)

✍ dations ◷ 2024-09-20 10:56:51 #计算机编程,经验法则

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

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

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

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

相关

  • 雄激素雄激素(英语:androgen、英语:androgenic hormones或英语:testoids),也译为雄性激素、男性激素、男性荷尔蒙,是一种化学成合物的泛称。在于脊椎动物中,凡是能够与雄激素受体(androgen
  • 柴可夫斯基彼得·伊里奇·柴可夫斯基(俄语:Пётр Ильич Чайковский,1840年5月7日-1893年11月6日),俄罗斯浪漫乐派作曲家,其作品有民族乐派特征,但仍以浪漫风格为基准。其风
  • 刺猬信号通路刺猬信号通路(英语:Hedgehog signaling pathway)是重要的信号传导通路。刺猬信号通路是动物发育的关键调控之一,在所有的两侧对称动物中都有表达。刺猬信号通路得名于在其多肽配
  • 葡萄牙华人葡萄牙华人(葡萄牙语:)是指居住在葡萄牙的华人,不管其国籍为何。而国籍为葡萄牙的华人则称为华裔葡萄牙人。葡萄牙华人是葡萄牙最大的亚裔团体,在葡萄牙具有外国背景的团体当中排
  • 周福清绍兴鲁迅故居藏周福清像周福清(1838年1月22日-1904年7月13日),原名致福,字震生,号介孚,一号梅山,浙江会稽县(今属绍兴市)人。清末政治人物,以同进士出身入仕,选翰林院庶吉士,捐内阁中书。
  • 维脊在几何学中,维脊(Ridge)又称为亚面(subfacet)是指几何形状的组成元素中,比该几何形状所在维度少2个维度的元素,其可以视为几何结构中,两个或多个维面相交成的几何结构。其可以视为多
  • 黄肋拟日月贝黄肋拟日月贝(学名:,台湾称大光芒海扇蛤),是莺蛤目光芒海扇蛤科拟日月贝属的一种。主要分布于中国大陆、台湾,常栖息在水深472米、粗砂底。
  • 约克·鲍文埃德温·约克·鲍文(英语:Edwin York Bowen,1884年2月22日-1961年11月23日),英国作曲家,钢琴家。鲍文幼年从母亲学钢琴,后进入皇家音乐学院学习,并很快成为优秀的音乐会钢琴家,1909年
  • 车梦瑶车梦瑶(16世纪-1630年代),字玉符,江西抚州府金谿县榉林乡人,明朝政治人物。车梦瑶在万历四十三年(1615年)中举人,天启二年(1622年)成进士,获授平江知县,升任礼部主事,负责册封益定王朱由木
  • 人海战术人海战术,是一种大批兵力以密集队形正面攻击对方战线的战术。具体形式是以大量密集步兵向对方冲锋,目的是冲入对方战线,以近战使得对方难以靠火力歼敌。美国海军陆战队大学教授