Logging and caching are (usually) acceptable side effects

Last edited April 2021

Good software development practice includes the elimination of side effects. Side effects make it hard to reason about the implementation.

While eliminating side effects is a worthy goal, two types of side effects are commonplace, and often expected:

These two types of side effects are so commonplace that they might not be called side effects, but rather intended primary effects.

Exceptions exist for both types of side effects, however. A (very small) list of examples: