All reasonably expected cases must be covered. Simplicity is not allowed to overly reduce completeness. I believe most people would agree that these are good characteristics. Simplicity-the design must be simple, both in implementation and interface. It is more important for the implementation to be simple than the interface.
Simplicity is the most important consideration in a design.
Correctness-the design must be correct in all observable aspects. It is slightly better to be simple than correct. Consistency-the design must not be overly inconsistent. Consistency can be sacrificed for simplicity in some cases, but it is better to drop those parts of the design that deal with less common circumstances than to introduce either implementational complexity or inconsistency. Completeness-the design must cover as many important situations as is practical.