- Should do the smallest thing possible
- Should be described by a noun
- What it does should be intuitively linked to its name
- Should be small
- Should be easy to reuse
- Should have a single responsibility
- Should be short
- Should be reusable
- Hide instance variables
- Use attr_accessor etc.
- Hide structure
- Use Struct or a new class to represent data if it make sense