三次法则 (程序设计)

✍ dations ◷ 2025-04-24 22:22:21 #计算机编程,经验法则

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

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

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

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

相关

  • 遗传型免疫球蛋白独特型是在不同个体的抗体上的等位基因。为了减少移植排斥反应,组织分型中会试图匹配捐献者和接受者以相同或相似的独特型。最重要的类型是Gm(重链)和km(轻链)。此外独
  • 肺淋巴管平滑肌增生症淋巴管平滑肌增生(英文:Lymphangioleiomyomatosis,通称:LAM),或称淋巴管平滑肌瘤、肺淋巴管肌瘤,是一种罕见、进行性、系统性疾病,通常发展为囊肿导致的肺功能丧失。LAM主要影响女性
  • 雅乐雅乐是儒家六艺之一,雅乐作为“正乐”需雅化或改造各地俗乐,去繁声存骨干以易统一风格来用作周朝宗庙祭献和朝廷的使用。相对于雅乐的正,郑国音乐的“郑声”具有负面价值意义,朱
  • 平壤爆击队《平壤爆击队》(又名平壤的最后一役)(韩国语:평양 폭격대/平壤爆擊隊*/?,英语:The Last Flight to Pyongyang/Last Battle in Pyeongyang)为1972年韩国战争电影,于1972年1月1日上映,片
  • 定海区定海区是中国浙江省舟山市下辖的一个区。位于舟山市东北部东海海域,舟山群岛中西部,由128个岛屿组成。面积568.8平方千米,拥有875.2平方公里海域和400多公里海岸线。人口36.8万
  • 正图形列表此页面列出了所有的欧几里得空间、双曲空间和球形空间的正图形或正多胞形。施莱夫利符号可以描述每一个正图形或正多胞形,他被广泛使用如下面的每一个紧凑的参考名称。正图形
  • 大卫·尼文大卫·尼文(James David Graham Niven ,1910年3月1日 - 1983年7月29日),英国演员与作家,曾获得奥斯卡最佳男主角奖。在第二次世界大战期间拍摄了两部电影,并在铜头蛇行动中执行了
  • 安东尼·文尼薛斯安东尼·山杜士·文尼薛斯(Antony Santos Menezes,1974年11月24日-),出生于巴西里约热内卢,加拿大职业足球运动员,司职后卫。文尼薛斯在10岁跟随家人移民到巴西,2001年前,他效力巴西
  • 安井俊哲算知安井算知(1810年-1858年),日本围棋棋手,为第八世安井仙知的儿子,幼名中野金之助,十六岁被立为迹目,改名为俊哲,并开始出赛御城碁。1838年仙知去世,俊哲继任为家督,是为第九世安井算知,为
  • 运动推断结构运动推断结构(SfM)是一种摄影测量范围成像技术,用于估计二维图像序列中的三维结构,这些图像可能与局部运动信号相结合。它是在计算机视觉和视觉感知领域进行研究的。在生物视觉