Sobes.tech
Junior — Middle

Kas saaksite anda näite, millal üks vastutusprintsiip on koodis rikutud?

sobes.tech AI

Vastus AI-lt

Ühe vastutuse põhimõte (Single Responsibility Principle, SRP) ütleb, et klassil või modulil peaks olema ainult üks põhjus muutuda, st olema vastutav ühe konkreetse ülesande eest.

Näide SRP rikkumisest Androidis:

public class UserProfileActivity extends AppCompatActivity {
    // Vastutab nii UI, andmete laadimise kui ka seadete salvestamise eest

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

        // Kasutaja andmete laadimine võrgust
        loadUserData();

        // Vajutuse käsitlemine salvestusnupul
        findViewById(R.id.saveButton).setOnClickListener(v -> saveUserSettings());
    }

    private void loadUserData() {
        // Võrguoperatsioon
    }

    private void saveUserSettings() {
        // Seadete salvestamine
    }
}

Siin vastutab UserProfileActivity samaaegselt UI kuvamise, andmete laadimise ja seadete salvestamise eest — see on SRP rikkumine. Need vastutused on parem jagada erinevatesse klassidesse, näiteks kasutada äriloogika jaoks ViewModel ja eraldi klassi võrguga töötamiseks.