A thorough test suite or formal verification increases the quality of the resulting code by removing bugs, while DRY violations and redundant checks often reduce it by adding overhead (which can often but not always be safely removed, and the skill of programming lies in knowing how to write minimal software and remove redundant checks in hot paths and areas without constantly changing contracts, and instead proving statically those paths are unreachable).