Однажды я прочитал, что метод должен иметь возвращаемое значение (и быть ссылочно прозрачным) или иметь побочные эффекты, но не оба. Я не могу найти никаких ссылок на это правило, но хочу узнать больше об этом.
Каково происхождение этого совета? Из какого человека или сообщества это возникло?
Дополнительный кредит: Какая заявленная выгода от следования этому совету?
language-agnostic
history
side-effect
pure-function
Уэйн Конрад
источник
источник
Ответы:
По словам Грега Янга, эта идея возникла у Бертрана Мейера : разделение команд и запросов .
В управляемом доменом дизайне это похоже на разделение / разделение команд-запросов-чтений (CQRS), как его назвал Грег Янг.
Грег Янг взял идею CQS от Bertrand, чтобы назвать CQRS, как упомянуто Мартином Фаулером в этой статье CQRS
Преимущества
Прочитайте статью в ссылке Мартина Фаулера для получения дополнительной информации.
источник
Я не знаю, откуда это взялось, но это хороший совет и довольно простой для понимания.
Любая разумно разработанная программа будет разбита на различные части, объединены и составлены различными способами. Чем сложнее рассуждать о том, что делает какая-то конкретная часть, тем сложнее будет убедиться, что ваша программа будет реагировать предсказуемым образом.
Изоляция частей, которые вызывают побочные эффекты, облегчает анализ, тестирование и отладку остальных. Уменьшение количества побочных эффектов в каждой части, которая генерирует побочный эффект, облегчит работу с этой частью таким же образом.
Если вы разложите его еще дальше, возвращаемое значение будет эффектом. Побочные эффекты - это эффект. Функция должна производить только 1 эффект (если это возможно), потому что чем больше входов и эффектов имеет функция, тем сложнее рассуждать о том, что она на самом деле делает.
источник
Одним из преимуществ отделения возвращаемого значения от побочных эффектов является то, что оно устраняет потенциальную проблему, которая может быть вызвана оценкой короткого замыкания .
источник