Is it doable, desirable to organize project classes, dependencies in Tree/DAG structure?
To be more specific. In applications (not libraries) we have always some entry point, am I right? Some main class. Here we keep some core dependencies, which have other dependencies and so on. We treat it as root of dependency tree.
I wonder if we should keep our dependencies in hierarchical order with some abstraction levels? How to organize complex class connections, keep low coupling, prevent from spaghetti code?