Могли бы вы привести пример, когда принцип единственной ответственности нарушается в коде?

Принцип единственной ответственности (Single Responsibility Principle, SRP) гласит, что класс или модуль должен иметь только одну причину для изменения, то есть отвечать за одну конкретную задачу.

Короткий ответ

Что ответить на собеседовании

Принцип единственной ответственности (Single Responsibility Principle, SRP) гласит, что класс или модуль должен иметь только одну причину для изменения, то есть отвечать за одну конкретную задачу.

Подробный разбор

Ответ с пояснениями

Принцип единственной ответственности (Single Responsibility Principle, SRP) гласит, что класс или модуль должен иметь только одну причину для изменения, то есть отвечать за одну конкретную задачу.

Пример нарушения SRP в Android:

public class UserProfileActivity extends AppCompatActivity {
    // Отвечает и за UI, и за загрузку данных, и за сохранение настроек

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

        // Загрузка данных пользователя из сети
        loadUserData();

        // Обработка нажатия кнопки сохранения
        findViewById(R.id.saveButton).setOnClickListener(v -> saveUserSettings());
    }

    private void loadUserData() {
        // Сетевая операция
    }

    private void saveUserSettings() {
        // Сохранение настроек
    }
}

Здесь UserProfileActivity отвечает одновременно за отображение UI, загрузку данных и сохранение настроек — это нарушение SRP. Правильнее разделить эти обязанности на разные классы, например, использовать ViewModel для бизнес-логики и отдельный класс для работы с сетью.

Практика в реальном времени

Подготовьтесь к следующему собеседованию

Interview Boost учитывает вакансию, резюме и технологии и помогает сформулировать ответ прямо во время интервью.

Начать подготовку