I just came across the article "Rule of Three" in wikipedia

Rule of three is a code refactoring rule of thumb to decide when a replicated piece of code should be replaced by a new procedure. It states that the code can be copied once, but that when the same code is used three times, it should be extracted into a new procedure. The rule was introduced by Martin Fowler in Refactoring and attributed to Don Roberts.

I know that this is just a rule of thumb, but why is it recommended to refactor only after the second duplication? Is there any downside to refactoring when we write the first duplication?

  • 3
    See Two is an impossible number and Zero-One-Infinity rule for another set of perspectives.
    – AakashM
    May 8, 2013 at 8:27
  • 2
    When talking about software development, the original Wiki is often a much better source than Wikipedia. After all, Ward Cunningham invented the Wiki as a means to talk about software development. See C2.Com/cgi/wiki?RuleOfThree May 8, 2013 at 9:37
  • 2
    If there's 2 scenarios for reuse, you can branch the logic easily (if, else). Once it gets to three possible paths it becomes easier to re-factor than replicate and maintain. May 8, 2013 at 17:22
  • possible duplicate of Rule of thumb for cost vs. savings for code re-use
    – gnat
    May 13, 2013 at 23:55
  • I think it's a convenient excuse for copy-paste, when one can actually refactor and generalize. When you get the third case, you can generalize more.
    – Alexey
    Sep 21, 2019 at 20:26

1 Answer 1


I think this rule of thumb exists because it is easy to get caught into playing "What if..." when designing the code for the first time or after the first duplication. I've encountered severe analysis paralysis in some cases because people started designing functionality that might be needed later. But not needed for the immediate problem at hand.

There is an art for designing/writing only what you need, while keeping the code amenable to future re-factoring.

  • 8
    That's a good point. In my experience, having a third copy also makes the commonalities and differences between them a bit sharper than with only two.
    – Daniel B
    May 8, 2013 at 7:03

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.