Separation of Concerns
https://medium.com/machine-words/separation-of-concerns-1d735b703a60
Separation of Concerns is one of the most important concepts that a software architect must internalize; it is also one of the most difficult to describe, because it is an abstraction of an abstraction.
Let’s start with a slightly less abstract example. In web programming, there is a design principle that says that your web site implementation should be separated into three domains: