tgoop.com/dev_easy_notes/82
Last Update:
Есть принципы SOLID которые по своей сути сводятся к совету: "За все хорошее, против всего плохого". На самом деле SOLID это крутые советы, однако вокруг них собралось кучу мифов и фанатиков, которые уверены, что по-другому писать код запрещено. На мой взгляд основная проблема этих принципов в том, что они четко не говорят как именно писать код.
Есть принципы которые не так сильно распиарены, зато простые и четко говорят что делать. Один из них это Command-query separation principle (принцип разделения команд и запросов).
Принцип исходит из понятий чистой функции. У нас есть функции чистые и функции которые что-то меняют. Принцип по сути говорит что это должны быть разные функции.
👉 Функции которые что-то возвращают, но при этом ничего не меняют – запросы.
👉 Функции которые что-то меняют, но ничего не возвращают – команды.
Этот принцип хорошо реализован во всех коллекциях. Вспомните List
у него есть метод isEmpty
который позволяет узнать пустой ли список или нет. Это по сути запрос, запрос у списка информации. Есть также метод add
или set
который уже меняют состояние списка, т.е является командой для списка.
Представьте если бы когда вызываешь метод isEmpty
что-то менялось в состоянии списка? Жуть правда, однако в продакшен коде такое встречается довольно часто. Например, функция isValid
которая при этом выводит ошибку на UI. Попробуйте сами использовать этот метод, начать просто, достаточно задать вопрос при создании функции: "А эта функция команда или запрос?".
BY Dev Easy Notes
Share with your friend now:
tgoop.com/dev_easy_notes/82