Learn how wrapper modules can help you design better APIs for your web apps.
In the article, I share a recent simple example that prompted the idea but I think it scales to larger more complicated scenarios as well.
In writing the article I also came across the concept of cohesion.
Cohesion refers to the degree to which the elements inside a module belong together.
This made me think about the pattern I see in many Elm web apps where it’s structured with the files
Types.elm. Using the concept of cohesion we see that these modules have low cohesion which then leads to high coupling (a related concept) between the modules. Overall, it leads to a less maintainable, less testable and less scalable solution.
Whereas, the approach that Evan shares in The life of a file gives you highly cohesive modules which leads to looser coupling. Overall, you end up with a better application architecture that can be easier to maintain, easier to test and more scalable.
Anyway, I just thought it was an interesting way to look at it.