Reduces side effects

Tag line

Descriptive

Prescriptive

Discussion (what it means or how it might be applied) {{renderer :wordcount_}}

An architecture is made up of sub-systems, and these sub systems must be built to reduce side effects outside of their intended functionality. The more side effects are produced by sub-systems, the more unpredictable and unmaintainable a system becomes.

Reducing side effects makes it easier to fight the tendency of a system towards entropy. One can think of side effects as “leaks” that may be harmless but have some probability of being harmful, especially at scale. Examples of side effects could be heat and sound in hardware systems, whereas in software it will mean any change to state caused by the function that is not the output of the function.

Historical reference (philosophy, etc)

While this principle exists in different forms in many areas, my version is mainly derived from the core concepts in functional programming. Like in mathematical functions, functional programming is designed around functions that are idempotent and produce no side effects, making them flexible modules that are easier to work with conceptually.

Source