Li uma vez que um método deveria ter um valor de retorno (e ser referencialmente transparente) ou ter efeitos colaterais, mas não ambos. Não consigo encontrar referências a esta regra, mas quero aprender mais sobre ela.
Qual é a origem deste conselho? De que pessoa ou comunidade surgiu?
Crédito extra: qual é o benefício reivindicado de seguir este conselho?
language-agnostic
history
side-effect
pure-function
Wayne Conrad
fonte
fonte
Respostas:
Segundo Greg Young, essa idéia se originou da separação de Bertrand Meyer : Command-Query .
No Design Orientado a Domínio, isso é semelhante à Separação / Segregação de Leitura de Comando-Consulta (CQRS), conforme nomeado por Greg Young.
Greg Young levou a idéia do CQS de Bertrand para nomear o CQRS, como mencionado por Martin Fowler neste artigo do CQRS
Benefícios
Leia o artigo no link Martin Fowler para obter mais informações.
fonte
Não sei de onde vem, mas é um bom conselho e é bastante simples de entender.
Qualquer programa elaborado com cuidado será dividido em várias partes, combinadas e compostas de várias maneiras. Quanto mais difícil for o raciocínio sobre o que qualquer parte em particular faz, mais difícil será garantir que seu programa reaja de maneira previsível.
Isolar as partes que produzem efeitos colaterais facilita o raciocínio, o teste e a depuração do restante. Reduzir o número de efeitos colaterais em cada parte que gera um efeito colateral facilitará o trabalho da parte da mesma maneira.
Se você decompô-lo ainda mais, um valor de retorno é um efeito. Efeitos colaterais são um efeito. Uma função deve produzir apenas 1 efeito (se possível) porque, quanto maior o número de entradas e efeitos que uma função tiver, maior será a dificuldade de raciocinar sobre o que realmente faz.
fonte
Um dos benefícios de separar o valor de retorno dos efeitos colaterais é que ele remove um problema em potencial que pode ser causado pela avaliação de curto-circuito .
fonte