Sobes.tech
Junior — Middle

Poderia dar um exemplo de quando o princípio da responsabilidade única é violado no código?

sobes.tech IA

Resposta da IA

O Princípio da Responsabilidade Única (Single Responsibility Principle, SRP) afirma que uma classe ou módulo deve ter apenas uma razão para mudar, ou seja, ser responsável por uma tarefa específica.

Exemplo de violação do SRP no Android:

public class UserProfileActivity extends AppCompatActivity {
    // Responsável tanto pela interface do usuário, quanto pelo carregamento de dados e pelo salvamento de configurações

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_user_profile);

        // Carregar dados do usuário da rede
        loadUserData();

        // Lidar com o clique no botão de salvar
        findViewById(R.id.saveButton).setOnClickListener(v -> saveUserSettings());
    }

    private void loadUserData() {
        // Operação de rede
    }

    private void saveUserSettings() {
        // Salvar configurações
    }
}

Aqui, UserProfileActivity responde simultaneamente por exibir a interface, carregar dados e salvar configurações — isso viola o SRP. É mais adequado dividir essas responsabilidades em classes diferentes, por exemplo, usar um ViewModel para a lógica de negócios e uma classe separada para trabalhar com a rede.