J'ai lu une fois qu'une méthode devrait avoir une valeur de retour (et être référentiellement transparente), ou avoir des effets secondaires, mais pas les deux. Je ne trouve aucune référence à cette règle, mais je souhaite en savoir plus.
Quelle est l'origine de ce conseil? De quelle personne ou communauté est-elle née?
Crédit supplémentaire: Quel est l'avantage revendiqué de suivre ces conseils?
language-agnostic
history
side-effect
pure-function
Wayne Conrad
la source
la source
Réponses:
Selon Greg Young, cette idée est née de Bertrand Meyer : séparation Command-Query .
Dans la conception pilotée par domaine, cela est similaire à la séparation / séparation de commande-requête-lecture (CQRS), comme l'a nommé Greg Young.
Greg Young a repris l'idée de CQS de Bertrand pour nommer CQRS comme mentionné par Martin Fowler dans cet article du CQRS
Avantages
Lisez l' article du lien Martin Fowler pour en savoir plus.
la source
Je ne sais pas d'où cela vient, mais c'est un bon conseil et assez simple à comprendre.
Tout programme sainement conçu sera divisé en différentes parties, combinées et composées de différentes manières. Plus il est difficile de raisonner sur ce que fait une partie en particulier, plus il sera difficile de s'assurer que votre programme réagira de manière prévisible.
Isoler les parties qui produisent des effets secondaires facilite le raisonnement, le test et le débogage du reste. La réduction du nombre d'effets secondaires dans chaque partie qui génère un effet secondaire rendra cette partie plus facile à utiliser de la même manière.
Si vous le décomposez encore plus, une valeur de retour est un effet. Les effets secondaires sont un effet. Une fonction ne devrait produire qu'un seul effet (si possible), car plus un nombre d'entrées et d'effets est important, plus il est difficile de raisonner sur ce qu'elle fait réellement.
la source
L'un des avantages de la séparation de la valeur de retour des effets secondaires est qu'elle élimine un problème potentiel qui peut être causé par une évaluation de court-circuit .
la source