WIP

Code should be concrete enough to be understood, but abstract enough to allow for change.
Methods are send messages, NOT methods are called. This is since OOPs means that implementation would not be visible to whoever sends the messages.

Consistency - eg: Use the same structure across - if vs tertiary.
Duplication - - Logic - Data Names - Concepts should be named clearly; take the effort to make the naming obvious

Judging Code

  1. How difficult was it to write? - lines of code; maybe something else.
  2. How difficult is it to understand?
  3. How expensive will it be to change?