Чтобы что-то на уровне детсткого сада
S - Single Responsobility, ты меняешь класс, только ради одного чела и только если он захочет.
O - открытость-закрытость, если ты уже написал класс и он работает. То изменять готовый код следует только в случае обнаружения ошибок, и никак иначе для дополнения функционала. Для этого есть наследование.
L - принцип подстановки, класс соблюдает этот принцип, если для клиентского кода он неотличим от своего суперкласса.
I - Разделение интерфейсов. Не стоит писать большиие интерфейсы для больших классов, потому что если захочется унаследовать для маленького класса большой интерфейс - то придется писать л и ш н и й код. Либо мокать его, что гораздо хуже.
D - инверсия зависимостей. Бизнес-логика не должна знать о том, что она использует какой-то конкретный фреймворк или технологию. Её зависимость от конкретных технологий должна быть о б р а т н о й.