A checklist for designing
- Don’t repeat yourself
- Don’t re-invent the wheel
- Don’t ignore errors silently
- Public interface should be as minimal as possible
- A subroutine should be small, do one thing and do it well
- Too many inputs/outputs is a code smell (fan-in fan-out)
- Don’t combine multiple operations in a single statement
- Inter-block communication should be an independent protocol