Cross-cutting concerns and the Single Responsibility Principle
When developing a piece of production software, there are often additional things that a function must do beyond its intended task: the function must not just return the result of the calculation, but also add a logging message. Or add an auditing message. Or the results must not just be presented to the user, but…