Well designed code keeps things that have to change together as close together in the code as possible and allows unrelated things in the code to change independently, while minimizing duplication in the code.

In the October 2008 issue of MSDN Magazine, Jeremy Miller shows you some design patterns that allow you to achieve higher cohesion and looser coupling for more flexible, reusable applications.