Architectural Boundaries: Which Package/Module/Class Owns That Responsibility?
The SOLID design principles beat the design boundary issue to death. Here are the principles in my preferred order. (See https://www.linkedin.com/learning/learning-s-o-l-i-d-programming-principles)
- Interface Segregation -- minimize the boundaries. Do this first.
- Liskov Substitution -- keep the boundaries consistent. Do this for hierarchies.
- Open/Closed -- keep the boundaries stable …