A aplicação do princípio é subjetiva. No entanto, "subjetivo" não equivale a "preferência" da mesma maneira que a estética.
Existem extremos óbvios. Uma classe com exatamente um método, com apenas algumas linhas de código, que não chama nenhuma outra classe, está definitivamente seguindo o SRP. Por outro lado, uma classe com dois métodos, um que contém uma implementação completa de email por soquetes brutos e outro que cria um formulário da GUI, definitivamente não está seguindo o SRP.
A estética é uma analogia ruim. Uma analogia melhor seria os conceitos bem conhecidos da ciência da computação de acoplamento e coesão . Nenhum desses atributos é preto ou branco, verdadeiro ou falso. No entanto, eles são mensuráveis, mesmo se houver um elemento qualitativo. Se você mostrar a um grupo de desenvolvedores experientes dois designs separados para o mesmo recurso, eles fornecerão leituras semelhantes nas quais o design tem mais acoplamento e / ou coesão.
De fato, o SRP é essencialmente apenas coesão funcional. Ele diz que as partes de algum módulo (por exemplo, classe) devem ser agrupadas porque todas elas contribuem para a execução da mesma função e por nenhum outro motivo. "Função" pode estar sujeita a interpretação - algumas pessoas podem interpretar isso literalmente como uma única declaração de função (ou método ou procedimento) , outras podem recuar um pouco e pensar em uma função como "enviando email" ou "tocando música" , mas ainda há muito espaço para manobrar. "Gerenciando coisas" não é uma descrição funcional válida.