practice

SOLID

Five object-oriented design principles — single responsibility, open/closed, Liskov substitution, interface segregation, dependency inversion.

oopdesign-principlescode

At the class level these are well-worn. What matters architecturally is that two of them scale past the class:

Dependency inversion is the mechanism behind hexagonal architecture, plugin systems and every testable integration boundary — depend on an abstraction you own, not on a concrete thing somebody else owns.

Single responsibility, correctly stated, is "one reason to change", which is the same idea as cohesion and the same idea as a bounded context, applied at a smaller scale. A module that changes when either the tax rules or the export format change has two responsibilities regardless of how few methods it has.

The others are valuable at the code level and rarely decide an architecture.