Каждый класс должен иметь только одну ответственность и она должна быть инкапсулирована внутри него.
Хотя как-то оно непонятно звучит. Давайте переформулируем в «одна сущность делает ровно одну вещь» (под сущностью можно понимать класс, функцию, может быть даже переменную).
Простейший пример:
(полностью этот код здесь)
Сколько вещей делает наша функция?
Только ли она получает информацию о температуре в городе? Не-а, она делает ещё что-то, а именно печатает её в консоль.
Эта функция отлично будет выполнять свою работу в консольной утилите, но что если нам нужно вывести эту температуру на веб-страницу?
Копипастить её?
А всё из-за нарушения SRP.
Обычно функциональность разделяют на три шага:
- получение данных
- обработка данных
- вывод данных
Перепишем код, приведя его в соответствии с SRP:
Что мы сделали?
- отделили получение данных в функцию fetch
- сделали функцию получения погоды — теперь её можно легко переиспользовать вне зависимости от того, куда нам надо вывести эту информацию
- и заодно отделили форматированию температуры — вдруг нам и формат захочется переиспользовать где-нибудь?
Из минусов только потеря оригинальной функции printTemp, но она настолько ничего не делает, что не имеет смысла её писать. Всем занимаются другие функции.
В целом, прежде чем писать код, заранее нужно прикинуть, на какие этапы можно разбить код и что должно быть универсальными и должны быть легко переиспользуемымы.
🚀Если узнал из статьи что-то полезное, ставь лайк и подписывайся на Дзене или группе ВК 😏
Если код не отображается - временно отключи блокировщик рекламы, это всё Дзен.
Все новые статьи можно найти на сайте - https://wcademy.ru/