Sobes.tech
Junior — Middle

Vai jūs varētu sniegt piemēru, kad kodā tiek pārkāpts vienas atbildības princips?

sobes.tech AI

Atbilde no AI

Vienas atbildības princips (Single Responsibility Principle, SRP) nosaka, ka klase vai modulis ir jābūt tikai vienam iemeslam mainīties, tas ir, jābūt atbildīgam par vienu konkrētu uzdevumu.

Piemērs SRP pārkāpumam Android:

public class UserProfileActivity extends AppCompatActivity {
    // Atbildīgs gan par UI, gan datu ielādi un iestatījumu saglabāšanu

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

        // Lietotāja datu ielāde no tīkla
        loadUserData();

        // Notikuma apstrāde saglabāšanas pogai
        findViewById(R.id.saveButton).setOnClickListener(v -> saveUserSettings());
    }

    private void loadUserData() {
        // Tīkla operācija
    }

    private void saveUserSettings() {
        // Iestatījumu saglabāšana
    }
}

Šeit UserProfileActivity ir atbildīga gan par UI attēlošanu, gan datu ielādi un iestatījumu saglabāšanu — tas ir SRP pārkāpums. Labāk ir šīs atbildības sadalīt dažādās klasēs, piemēram, biznesa loģikai izmantot ViewModel un atsevišķu klasi darbam ar tīklu.