Dry means that don ' t Repeat yourself specifically avoids duplication of code in programming and computation, because it reduces flexibility, simplicity, and can lead to inconsistencies between the code. "The Pragmatic Programmer" has made a very good exposition of this idea.
Abstract all the duplicated code. I think the main reason is very good maintenance, when the need to change the only need to change once.
The level of code reuse:
Function-level reuse, object-level reuse, interface-level, class-Library-level reuse, and frame-level reuse.
Note: We are still at "functional level multiplexing". (This most basic good also reduces a lot of duplicate code ...)
Another point of view is the separation of fixed and changing parts.
Fixed partial separation facilitates code reuse, partial separation of transformations, and easy modification of replacements when transformations occur.
Simplicity is more important than simplicity, the determinants of maintenance costs.
Don ' t Repeat yourself (don't repeat yourself)