Abstractions & Encapsulation
Use stable façades and information hiding to manage complexity, evolve safely, and enforce boundaries
Use stable façades and information hiding to manage complexity, evolve safely, and enforce boundaries
Keep class responsibilities focused and strongly related to its purpose
Master the Principle of Least Knowledge to reduce coupling and improve maintainability in complex systems.
Minimize dependencies between classes to improve flexibility, testability, and maintainability
Apply modularity principles, information hiding, and sound module design to reduce coupling, improve cohesion, and enable independent system evolution.
Software entities should be open for extension, closed for modification. Design for change without breaking existing code.
Protect classes from variations in other classes using abstraction and stable interfaces