Simple Design

These are recommendations from famed hacker Corey Haines
  • Tests Pass:
    • Yes, you have to learn how to write tests and make it part of your practice
    • Doesn’t have to be test-driven design
  • Expresses Intent:
    • Yes, naming matters a lot.
    • Often as or more important than documentation
  • No Duplication (DRY)
    • In the simplest sense, no textual duplication of lines of code
    • More important: No duplication of concepts or knowledge
  • Small
    • Partly YAGNI
    • But also: remove code paths, classes, test data, examples, abstractions that are no longer used.