Some of you may have noticed that it may not always be a good idea to cram a lot of functionality into a single project. Our project's structure currently looks like this:
We have been adding folders upon folders and inside folders, and for large projects, it can quickly get out of hand and be a nightmare in terms of maintenance. This section serves only to give you awareness of the best practices to consider while designing our solutions using a layered architecture, which aims at achieving the following:
- A defined SoC.
- Less painful maintenance because of low coupling between layers and high cohesion between the layers.
- The ability to be able to exchange and switch out different implementations of layer interfaces.
- Other solutions should be able to reuse functionality that's been exposed by the various layers.