This is a question that we have all struggled with in building applications. It is an important question because it influences the architecture of our code and how well our app will absorb new features and complexity as it naturally grows during its lifetime. TL;DR (Summary)There are many approaches that will work but it is important to understand the tradeoffs to pick the best solution. I discuss