1. Runs all the tests
  2. Contains no duplication
  3. Expresses all the design ideas that are in the system
  4. Minimises the number of entries such as classes, methods, functions etc