是否有理由等到第三规则中的第三次?


16

我刚刚在维基百科上看到了文章“ 三法则

第三规则是代码重构的经验法则,用于确定何时应将新代码替换为新过程。它指出该代码只能复制一次,但是当同一代码使用3次时,应将其提取到新过程中。该规则由Martin Fowler在“重构”中引入,并归因于Don Roberts。

我知道这只是一个经验法则,但是为什么建议仅在第二次重复之后才进行重构?编写第一个副本时,重构有什么不利之处吗?


2
有关另一组观点,请参见2是不可能的数零一无穷规则
AakashM

在谈论软件开发时,原始 Wiki通常比Wikipedia更好。毕竟,沃德·坎宁安(Ward Cunningham)发明了Wiki作为谈论软件开发的一种手段。见C2.Com/cgi/wiki?RuleOfThree
约尔格W¯¯米塔格

2
如果有两种重用方案,则可以轻松分支逻辑(如果是)。一旦到达三个可能的路径,重构就比复制和维护容易。
安德鲁·刘易斯


我认为这是复制粘贴的方便借口,当人们实际上可以重构和概括时。当您得到第三种情况时,您可以进一步推广。
Alexey

Answers:


17

我认为存在这种经验法则是因为在第一次或第一次重复设计代码时,很容易陷入播放“ if ...”的情况。在某些情况下,我遇到了严重的分析瘫痪,因为人们开始设计以后可能需要的功能。但是眼前的问题并不需要。

只有一种设计/编写所需的技巧,同时又使代码适合将来的重构。


8
那是个很好的观点。以我的经验,拥有第三份副本也会使它们之间的共性和差异比仅有两个副本时更加明显。
丹尼尔·B
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.