 <p>This should answer it: <a href="http://en.wikipedia.org/wiki/Don%27t_repeat_yourself" rel="nofollow noreferrer">http://en.wikipedia.org/wiki/Don%27t_repeat_yourself</a> and <a href="http://www.codinghorror.com/blog/2007/03/curlys-law-do-one-thing.html" rel="nofollow noreferrer">http://www.codinghorror.com/blog/2007/03/curlys-law-do-one-thing.html</a></p> <blockquote> <p>Curly's Law, Do One Thing, is reflected in several core principles of modern software development:</p> <ul> <li><p><strong>Don't Repeat Yourself</strong></p> <p>If you have more than one way to express the same thing, at some point the two or three different representations will most likely fall out of step with each other. Even if they don't, you're guaranteeing yourself the headache of maintaining them in parallel whenever a change occurs. And change will occur. Don't repeat yourself is important if you want flexible and maintainable software.</p></li> <li><p><strong>Once and Only Once</strong></p> <p>Each and every declaration of behavior should occur once, and only once. This is one of the main goals, if not the main goal, when refactoring code. The design goal is to eliminate duplicated declarations of behavior, typically by merging them or replacing multiple similar implementations with a unifying abstraction.</p></li> <li><p><strong>Single Point of Truth</strong></p> <p>Repetition leads to inconsistency and code that is subtly broken, because you changed only some repetitions when you needed to change all of them. Often, it also means that you haven't properly thought through the organization of your code. Any time you see duplicate code, that's a danger sign. Complexity is a cost; don't pay it twice.</p></li> </ul> </blockquote>