Skip to content

Latest commit

 

History

History
57 lines (41 loc) · 2.22 KB

srp.md

File metadata and controls

57 lines (41 loc) · 2.22 KB
description
Принцип единственной ответственности | Single Responsibility Principle | SRP

SRP

Принцип единственной ответственности

SRP звучит так:

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

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

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

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

{% hint style="info" %} Собирайте вместе тот функционал, который будет изменяться единовременно и по одной причине. И разделяйте то, что изменяется в разное время по разным причинам. {% endhint %}

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

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

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

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

  • бухгалтерия (метод calculatePay)
  • администраторы БД (метод save)

{% hint style="info" %} Актор - лицо, заинтересованное в изменении кода. {% endhint %}

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