- DRY – Don’t repeat yourself
- Abstraction Principle
- Keep It Simple and Stupid
- Avoid Creating a YAGNI (You aren’t going to need it)
- Do the simplest thing that could possibly work
- Don’t make me think
- Open/Closed Principle
- Write Code for the Maintainer
- Principle of least astonishment
- Single Responsibility Principle
- Minimize Coupling
- Maximize Cohesion
- Hide Implementation Details
- Law of Demeter
- Avoid Premature Optimization
- Code Reuse is Good
- Separation of Concerns
- Embrace Change
- Beautiful is better than ugly.
- Explicit is better than implicit.
- Simple is better than complex.
- Complex is better than complicated.
- Flat is better than nested.
- Sparse is better than dense.
- Readability counts.
- Special cases aren’t special enough to break the rules.
Although practicality beats purity.
- Errors should never pass silently.
Unless explicitly silenced.
- In the face of ambiguity, refuse the temptation to guess.
- There should be one — and preferably only one — obvious way to to it
Although that way may not be obvious at first unless you’re Dutch
- Now is better than never.
Although never if often better than right now.
- If the implementation is hard to explain, it’s a bad idea.
- If the implementation is easy to explain, it may be a good idea.
- NameSpaces are one honking great idea — let’s do more of those.