Есть философский вопрос... вот существует какой-то код, допустим библиотека dll с бизнес логикой, притом логика самая общая.
Допустим там классы которые обрабатывают ключи, пароли "хранят", управляют, генерируют допустим.
И из этого функционала рождается много волшебных описательных классов, которые разделяются по признаку того, что они делают.
Например начало класса DeviceKey а дальше Service, Manager, Repository, Provider, ApiClient, Resolver
И вот вопрос рождается, что Service может быть Manager, и Provider и вообще кучу ролей на себя принимать. И даже S из SOLID при этом не будет нарушать на первый взгляд.
Как провести черту между такими классами, и вообще правильно ли классы делать настолько маркерными (манагер, провайдер)