This page is still work in progress
When developping software the priorities are as following:
- correctness
- maintainability
- efficiency
Correct SW
- Defensive Programming
- Unit Tests
- Contracts
- Static Analysis
Maintainable SW
- Architecture
- Design Patterns
- Idioms
- Readable/intuitive code
- Correct and Actual Documentation
Optimal, efficient (Optimized) SW
- Speed
- Size (Program Size, Memory Use)
- Dynamic Analysis
- No premature optimization
- Often code gets less readable/maintainable
- let the compiler/linker do the hard work