Developers, as any other human, are limited by the amount of complexity that we are able to understand and handle. For that reason, we group code using mental models like, architectural layers, components and systems. That’s the very known divide and conquer approach.
“The architecture of a system is defined by a set of software components and the boundaries that separate them.” — Robert C Martin
When it comes to separating the code, the objective is always to get code segregated in layers/components maximizing cohesion and minimizing coupling. This brings the benefits of creating reusable, modifiable and understandable systems. That’s…
I’m an iOS Developer and a Mathematician. “Truth is ever to be found in the simplicity, and not in the multiplicity and confusion of things.”