Eu vejo o SRP não em relação a classe ter poucas funções, mas uma classe que tem apenas uma motivação para mudar e isso se obtém quando a classe tem "poucas obrigações".
Por exemplo, veja o padrão Active Record
, eu acho que esse padrão fere o SRP, pois a classe além de representar uma entidade do negócio como um User
, a classe passa ter a responsabilidade de CRUD
com o banco de dados.
Outro exemplo, uma classe Pedido
quando é responsável por validar os dados, validar os itens, atribuir políticas de descontos, analisar a posição do estoque e etc. Já vi muitos casos do tipo, qualquer coisa que mude no negócio como a regra de descontos, seria motivo de alterar a classe Pedido
. Definir esses processos em diferentes classes podem simplificar o processo e a compreensão do todo.