Building Large-Scale Apps with SwiftUI: A Guide to Modular Architecture
--
Update (03/02/2023): Added View Specific Logic section.
Software architecture is always a topic for hot debate, specially when there are so many different choices. For the last 8–12 months, I have been experimenting with MV pattern to build client/server apps and wrote about it in my original article SwiftUI Architecture — A Complete Guide to MV Pattern Approach. In this article, I will discuss how MV pattern can be applied to build large scale client/server applications.
Architecture and patterns depends on the type of application you are building. No single architecture will work in all scenarios. Choose the best architecture suitable for your application needs.
The outline of this article is shown below:
- Modular Architecture
- Understanding the MV Pattern
- Multiple Aggregate Models
- View Specific Logic
- Screens vs Views
- Validation
- Navigation
- Grouping View Events
- Testing
Modular Architecture
Modular architecture in software refers to the design and organization of software systems into small, self contained modules or components. These modules can be tested and maintained independently of one another. Each module serves a specific purpose and solve a specific business requirement.
Modular architecture also provides advantages when working on large projects consisting of multiple teams. Each team can work on a particular module, without interfering with each other.
If you are working on a module that will be consumed or used by other teams then make sure that you are communicating with them and not creating the module in complete isolation. A lot of problems in software development exists solely because of lack of communication between teams.
Modularity can be achieved in several different ways. You can expose each module as a package (SPM), which can be imported into different applications. Modularity can also be achieved by structuring your app based on specific grouping or folder…