Separate a program into non-overlapping concerns. Edsger W. Dijkstra
Motivation
Clearly separated code has some advantages.
Firstly, the programming units are small and are less dependent on each other. This eases testing.
Secondly, when concerns are cleanly separated it's easier to reason about the application. This is a valuable asset during development as well as exploitation of the application.