I do not write business applications. Oh sure, I write applications for a business. This business makes money. The applications which I write helps them make more money. However, these applications are in the domain of product engineering. They are not in the domain of running the business. They do not deal with cash flow, inventory, accounts receivable or payable. There is no letter opener of death involved with any of my application users.
My applications have no Business Logic. The business processes could change at this company and my applications don’t know anything about it. We solve engineering problems. That said, separation of UI and Business Logic is still a strong concern. It isn’t Business Logic. It is Application Logic.
Why mention this? I feel like there are programmers out there who say to themselves, “I do not write business applications, therefore this silly separation of business logic does not apply to me.” These programmers are wrong. Separation of application logic from UI code is valid not matter what the application. Separation of Concerns extends to every type of software. I cannot imagine a type of software from which separation of concerns does not benefit. I’ll go so far as to say that if you think you have a case: that you are wrong. If you think you can justify it to me, I will simply redesign to a case which does fit.
Do you write math apps? Separate your Math Logic from your UI.
Do you write engineering apps? Separate your Engineering Logic from you UI.
Do you write medical apps? Separate your Medical Logic from your UI.
Do you write biology apps? Separate your Biology Logic from your UI.
Do you write Anthropology apps? Separate your Anthropology Logic from your UI.
Do you write Sociology apps? Separate your Sociology Logic from your UI.
Do you write Psychology apps? Separate your Psychology Logic from your UI.
Do you write Legal apps? Separate your Legal Logic from your UI.
Do you see a pattern here?
Separate your seeing of patterns from your UI. Good.