Sobes.tech
Junior — Middle

Tudna példát mondani arra, mikor sérül a felelősség egyetlen elvének betartása a kódban?

sobes.tech MI

Válasz az MI-től

Az egyetlen felelősség elve (Single Responsibility Principle, SRP) kimondja, hogy egy osztálynak vagy modulnak csak egy oka lehet a változásra, vagyis egy konkrét feladatért kell felelősséget vállalnia.

Android példája az SRP megsértésének:

public class UserProfileActivity extends AppCompatActivity {
    // Egyidejűleg felelős a UI-ért, az adatok betöltéséért és a beállítások mentéséért

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

        // Felhasználói adatok betöltése hálózatról
        loadUserData();

        // A mentés gomb kattintásának kezelése
        findViewById(R.id.saveButton).setOnClickListener(v -> saveUserSettings());
    }

    private void loadUserData() {
        // Hálózati művelet
    }

    private void saveUserSettings() {
        // Beállítások mentése
    }
}

Itt a UserProfileActivity egyszerre felelős a UI megjelenítéséért, az adatok betöltéséért és a beállítások mentéséért — ez sérti az SRP-t. Ezeket a felelősségeket célszerű külön osztályokra bontani, például üzleti logikához ViewModel-t használni, és külön osztályt a hálózati műveletekhez.