- Reduce cyclomatic complexity to < 5 per function
- Extract nested conditionals into separate functions
- Use strategy pattern for discount calculations
- Improve readability and maintainability
- Preserve all existing functionality
- Do not change function signatures
- Maintain backward compatibility
- Add type hints
- Add docstrings
- Extract discount calculation logic into separate functions
- Create discount strategy classes
- Simplify conditional logic
- Use early returns to reduce nesting