Refactoring Workbook

"You can say that again!"

Duplication has been recognized for more than 30 years as the bane of the programmer's lot. How does duplication cause problems?

  • There is more code to maintain (a conceptual and physical burden ).

  • Parts that vary are buried inside the parts that stay the same (a perceptual problem ”it's hard to see the important stuff).

  • Code variations often hide deeper similarities ”it will be hard to see the deeper solution among all the similar code.

  • There's a tendency to fix a bug in one place and leave identical bugs elsewhere unfixed. When you see two variations of something, it's hard to know which variation is the right pattern or if there's a good reason for the variations.

David Parnas introduced the idea of information hiding: A good module has a secret. By ensuring that a module keeps its secret, we usually reduce duplication. (See "On the criteria to be used in decomposing systems into modules," Communications of the ACM , 15 [2], 1972.)

Duplication is a root problem. Many other smells are special-case indicators of duplication. Duplication is not always obvious, but it's critical that we address it. Strive to make your code express each idea "once and only once."

Категории