У класса должна быть только одна причина для изменения

Идея принципа единой ответственности (SRP) заключается в том, чтобы сделать каждый класс ответственным за одну часть функций, предоставляемых программным обеспечением, и сделать ответственность полностью инкапсулированной классом. Цель этого принципа — уменьшить сложность. Всегда хорошо следовать принципу SRP, но если вы пишете очень маленькую программу, состоящую из 200 строк кода, с дюжиной красивых методов все будет в порядке.

Настоящие проблемы возникают, когда ваша программа постоянно растет и изменяется. В какой-то момент классы становятся настолько большими, что вы уже не можете вспомнить их детали. Навигация по коду замедляется до минимума, и вам приходится просматривать целые классы или даже всю программу, чтобы найти конкретные вещи.

И еще: если класс делает слишком много вещей, вы должны менять его каждый раз, когда меняется одна из этих вещей. При этом вы рискуете сломать другие части класса, которые вы даже не собирались менять. Если вы чувствуете, что становится сложно сосредоточиться на отдельных аспектах программы по одному, вспомните о принципе единой ответственности и проверьте, не пора ли разделить некоторые занятия на небольшие части.

Пример

Допустим, у нас есть класс сотрудников, который содержит данные конкретного сотрудника, а также распечатывает отчет о расписании. На данный момент у класса сотрудников есть несколько причин для изменения. Первая причина может быть связана с основной работой класса: управлением данными о сотрудниках. Однако есть и другая причина: формат отчета о расписании может меняться со временем, что требует от вас изменения кода внутри класса.

Таким образом, текущий класс сотрудников содержит несколько различных моделей поведения.

Решите проблему, переместив поведение, связанное с форматированием и печатью отчетов расписаний, в отдельный класс. Это изменение позволяет переместить другие материалы, связанные с отчетами, в новый класс.

Поэтому после этого изменения дополнительное поведение находится в своем собственном классе.

Эта статья написана на основе книги Александра Швеца «Погружение в шаблоны проектирования», которую я сейчас читаю. Не стесняйтесь, пишите мне ([email protected]), если у вас есть какие-либо вопросы, интересные возможности или вы просто хотите поздороваться.

Linkedin: https://www.linkedin.com/in/adriatikgashi

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