- Define interfaces or contracts for DB Layer.
- Inject Dependencies for Infra & Db layer from api/application layer
- Avoid tight coupling between components
- Single responsibility for components/classes/functions
- Invert all dependencies for better control & unit testability
- Use Data Transfer Objects/Intermediate objects for transfer between layers & components.
- Avoid accessing config files directly. Use dependency injection.
- Use parameterised queries
- Use prepared statement.
- Using enums & Lk tables in db
- Avoid joins on LK tables by maintaining enums(for better performance)
- Code Coverage of atleast 80% on all business layers
Written with StackEdit.