Sobes.tech
Junior — Middle

Môžete uviesť príklad, kedy je v kóde porušený princíp jednotnej zodpovednosti?

sobes.tech AI

Odpoveď od AI

Princíp zodpovednosti za jedinú zodpovednosť (Single Responsibility Principle, SRP) hovorí, že trieda alebo modul by mal mať len jeden dôvod na zmenu, teda byť zodpovedný za jeden konkrétny úkol.

Príklad porušenia SRP v Android:

public class UserProfileActivity extends AppCompatActivity {
    // Zodpovedná za UI, načítanie dát a uloženie nastavení

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

        // Načítanie používateľských dát zo siete
        loadUserData();

        // Spracovanie kliknutia na tlačidlo uložiť
        findViewById(R.id.saveButton).setOnClickListener(v -> saveUserSettings());
    }

    private void loadUserData() {
        // Sieťová operácia
    }

    private void saveUserSettings() {
        // Uloženie nastavení
    }
}

Tu UserProfileActivity je zodpovedná naraz za zobrazovanie UI, načítanie dát a uloženie nastavení — čo porušuje SRP. Je vhodnejšie tieto zodpovednosti rozdeliť do rôznych tried, napríklad použiť ViewModel pre biznis logiku a samostatnú triedu pre prácu so sieťou.