SRP

Принцип единственной ответственности | Single Responsibility Principle | SRP

SRP звучит так:

Существует лишь одна причина, приводящая к изменению класса.

Ответственность – это причина изменения кода.

Если при изменении кода, отвечающего за одну ответственность, в приложении появляются исправления кода, отвечающего за другую ответственность – есть нарушения SRP.

Антипаттерн – божественный объект.

Собирайте вместе тот функционал, который будет изменяться единовременно и по одной причине. И разделяйте то, что изменяется в разное время по разным причинам.

Пример нарушения SRP

class Employee {
    /**
     * 1-я ответственность
     *
     * Бизнес-логика
     */
    calculatePay () {
        // ...
    }

    /**
     * 2-я ответственность
     *
     * Управление сохранением
     */
    save () {
        // ...
    }
}

От класса Employee зависят сразу 2 актора:

  • бухгалтерия (метод calculatePay)

  • администраторы БД (метод save)

Актор - лицо, заинтересованное в изменении кода.

Бизнес-логика по природе своей изменяется довольно часто. Механизмы сохранения изменяются гораздо реже и совсем по другим причинам.

Last updated