Jusqu'à maintenant, il y avait une bidouille un peu bizarre pour obtenir la distance d'une ressource (action, acteur) par rapport à un paramètre passé en entrée :
actor.location = qqchose
Ça posait plusieurs problèmes, entre-autres :
faire actor.location = qqchose pour définir en réalité une propriété distance n'est pas parlant (expressivité)
l'objet possède déjà une propriété loc, ce n'est pas évident de comprendre la différence entre loc et location
l'objet se retouve pollué par une nouvelle propriété location qui est une copie partielle de loc.
l'intention n'est pas visible et les conséquences encore moins quand on lit le code.
mais surtout ça ne marche pas avec mongoose. En effet, selon la façon dont on fait la requête, il est possible que mongoose n'applique pas les setters. C'est le cas par exemple quand une aggrégation est faite : les setters ne sont pas appliqués sur l'objet.
Duplication de code entre les modèles Actor et Action.
J'ai supprimé du code, factorisé et remplacé par une fonction setDistance qui opère une mutation.
Side note: Cette mutation me semble acceptable, j'ai voulu passer en immutable et je me suis rendu compte que ça n'apportait rien à part la satisfaction de se dire "je fais du code immutable", le set étant par contrat une opération de mutation.
@vinyll Bonne relecture, j'aurai besoin de merger ça avant de livrer les corrections sur le front (je n'avais pas vu ce bug ce matin, donc je pensais que les distances étaient settées, mais non).
Jusqu'à maintenant, il y avait une bidouille un peu bizarre pour obtenir la distance d'une ressource (action, acteur) par rapport à un paramètre passé en entrée :
Ça posait plusieurs problèmes, entre-autres :
actor.location = qqchose
pour définir en réalité une propriétédistance
n'est pas parlant (expressivité)loc
, ce n'est pas évident de comprendre la différence entreloc
etlocation
location
qui est une copie partielle deloc
.Actor
etAction
.J'ai supprimé du code, factorisé et remplacé par une fonction
setDistance
qui opère une mutation.Side note: Cette mutation me semble acceptable, j'ai voulu passer en immutable et je me suis rendu compte que ça n'apportait rien à part la satisfaction de se dire "je fais du code immutable", le
set
étant par contrat une opération de mutation.@vinyll Bonne relecture, j'aurai besoin de merger ça avant de livrer les corrections sur le front (je n'avais pas vu ce bug ce matin, donc je pensais que les distances étaient settées, mais non).