See the problem with this explanation is again, it doesn&#x27;t explain the reasons why this is bad. I&#x27;m not saying the reasons don&#x27;t exist - on the contrary I agree they&#x27;re very much real. However I don&#x27;t think &quot;view logic, domain&#x2F;business logic and database boilerplate code are intermixed in a single file&quot; qualifies as a straightforward, logical explanation. It simply doesn&#x27;t answer the &quot;why&quot; question at all.<p>Let me try and cover some of the reasons why. I&#x27;m sure you know about these reasons (and can probably list more), my goal is just to present an example of what I consider to be a straightforward logical explanation:<p>If domain&#x2F;business logic is mixed with view logic, then it would not be possible to reuse the same logic in a different view. These changes happen more often than anticipated: for example, a PHP project that has the view logic separated from the domain&#x2F;business logic can more easily get an API (a HTML is one view, a JSON API would be just another view)<p>Additionally separating database code from business logic lets you switch databases more easily or to give you multiple ways to access the data. For example, data may be directly fetched from an SQL database initially, then its determined that this is too slow and results need to be cached in Redis. If there is no separate code for the data access layer, you would need to locate every database query and make sure it queries the cache first.<p>So this is what qualifies as a straightforward, logical explanation for me: lets assume the opposite statement was true, then we demonstrate how this leads to a bad situation and why its bad (more bugs, more work, and so on).<p>Another would be doing a case study: we did X (mixed business logic and templates in this way), then when we wanted to do Y (present a different view V) we had to not only write new code (for the new view) but deal with this problem (uncouple the existing logic from the existing view). If we originally did otherwise (wrote the logic separately) this would&#x27;ve been the same or similar amount of work (demonstrate this) yet later we would not have to do the hairy decoupling (which took Z amount of time and caused N bugs)<p>I think the whole industry would do much better if we focused more on actual specific examples and case studies of problems and drawbacks of different approaches rather than giving vague descriptions of the current state and claiming its &quot;bad&quot;. Its just not helpful at all. There is so much reinventing the wheel in our profession simply because we are not communicating knowledge effectively. Frankly, most of it reminds me of religious dogma.