It's a mistake to pick any of those rules as an absolute truth. It varies by task, maintenance and time constraints. DRY makes a lot of sense in some cases, but some others even need a rule of four+ (think of heuristics-heavy code). IMO DRY is most useful when working on a codebase owned by someone else than you.