Conditional logic should avoid double negatives.
Code should be formatted the same way and enforced automatically using tools.
Logic should ask, "Is this true?" instead of "Is this not true?"
Core logic that is related to solving a business or domain problem should exist outside of a framework.
When software behaves unexpectedly, it should be easy to understand what is causing the problem.
When encountering documentation, it should be easy to make changes.
Data should be held in one location, duplicates of that data should be by reference only.
Documentation, in all forms, should be as close as it can be to the code.
Software entities should be open for extension, but closed for modification.