Что такое single-responsibility-principle?
Используйте при создании или изменении классов, модулей или функций. Используйте, когда чувствуете необходимость добавить функциональность к существующему коду. Используйте, когда у класса есть несколько причин для изменения. Источник: yanko-belov/code-craft.