Good intentions: Forcing code into libraries to cleanly separate layers.
Reality: Making libraries circularly-dependent because layers are difficult.
Reality: Making libraries circularly-dependent because layers are difficult.
I think a decent common meta-arch for layers is like:
1. UIs (CLIs, TUIs, GUIs or APIs)
on top of
2. OO (as light as net win)
on top of
3. procedural/imperative
and/or ideally
on top of
4. FP
I've got a personal arch pattern I've evolved towards and reused over the years. like crafting rules I follow when planning a lib vs exe vs RESTful HTTP etc. how to divvy it up. getting layers right is important for testing too