87 подписчиков
Другой важный принцип проектирования функций Command-Query Separation (CQS). Он не совсем про слои, но очень в тему. Обычно звучит так: "задавая вопрос, не изменяй ответ". То есть геттеры не должны менять состояние, это противоречит их сути и может ломать детерминированность
А команды (любые функции на изменение) не должны возвращать данные. Это создает сложный в понимании код. Хотя справедливости ради, не всегда возможно избавиться от возврата данных у команд. Например открытие соединений или файлов всегда возвращают что-то
В сети довольно много статей про это https://dan-manges.com/blog/2011/activemodel-validations-and-command-query-separation… Оно касается не только рейлс, похожее есть и в других местах. Рекомендую почитать и задуматься)
Около минуты
20 июля 2024