S - for the Single Responsibility Principle(SRP), which guides you in creating classes that are responsible for one, and only one actor.
O - for the Open/Closed Principle(OCP), which makes your code easy to extend by ensuring that it stays open for extension but closed for modification
L - for the Liskov Substitution Principle(LSP), which keeps semantic consistency in complex inheritance hierarchies, making your classes easier to understand and use.
I - for the Interface Segregation Principle(ISP), which protects objects from depending on the behavior they don't really need.
D - for the Dependency Inversion Principle(DIP), which controls the direction of dependencies in your code, ensuring that it always flows in the direction of more abstract entities.