Je t'ai donné un code qui réponds exactement à la spec. On peut ergoter sur le cas $amount=0 (faut-il retourner 0 ou null?), mais pour le reste, cela répond bien à ma spec. Ce que tu n'arrives pas à assimiler, c'est que ma méthode accepte n'importe quoi en entrée (c'est son contrat), et qu'elle retournera une quantité différente suivant qui l'a demandé (enfin, suivant le paramètre d'entrée, car au fond, rien ne garantis que ce paramètre d'entrée est l'appelant, le $this). Son contrat (le message auquel elle répond) n'est pas son algorithme interne de réponse.
Forcément, si tu choisis de ne pas respecter la spec, cela change des choses, mais cela te force à avouer que ta méthode ne permet pas de tout coder. Donc, j'ai bien trouvé ton cas impossible en East, et je remettrais en cause la méthodologie. Sauf que tu veux pas l'avouer. C'est pas grave de se tromper, mais s'obstiner ainsi, ça me semble problématique (ou de mauvaise foi). Je sais que plus on a investi dans un truc, plus c'est difficile de le lâcher ou d'avouer que c'était un échec/une erreur, mais faut savoir le faire: ça aide dans la vie.
Je suis d'accord: on ne teste pas un bean. Sauf que t'as pas fait un bean, puisque tu lui as collé une méthode. Force est de constater que cette méthode n'est pas testable.
Heu, les clone au niveau perf, je demande à voir... Bon, c'est vu: 4ms environ pour les 3 échanges, alors que le mien mets 1ms. Bon, okay, ealy optimization is evil, mais ne me sors plus l'argument que "Au niveau perf, c'est pas grand chose".
Okay, tu t'affranchis du test is_integer en PHP7. Pourquoi considères-tu que le test $i > 0 est de nature différente de is_integer($i) ou de $i instanceof Machin?
Okay, t'as protégé ton code contre la PetitePeste. Maintenant, la méthode Hero::ageOfWomenIs(Age $age) n'a aucun intérêt à être appelée par une classe externe. Tu penses pas que ça pollue inutilement l'API publique de ton interface?
Par ailleurs, si un autre héro (disons, Attila, oui c'est un héro byzare) ne fait pas la distinction entre l'age de ceux qui demandent de l'argent, tu fais comment? Tu te traînes la méthode ageOfWomenIs inutilement (vive le dead code)? Tu crées une nouvelle interface, et tu bricoles Conan ? Tu vas péter des tas de trucs...
Forcément, si tu choisis de ne pas respecter la spec, cela change des choses, mais cela te force à avouer que ta méthode ne permet pas de tout coder. Donc, j'ai bien trouvé ton cas impossible en East, et je remettrais en cause la méthodologie. Sauf que tu veux pas l'avouer. C'est pas grave de se tromper, mais s'obstiner ainsi, ça me semble problématique (ou de mauvaise foi). Je sais que plus on a investi dans un truc, plus c'est difficile de le lâcher ou d'avouer que c'était un échec/une erreur, mais faut savoir le faire: ça aide dans la vie.
Je suis d'accord: on ne teste pas un bean. Sauf que t'as pas fait un bean, puisque tu lui as collé une méthode. Force est de constater que cette méthode n'est pas testable.
Heu, les clone au niveau perf, je demande à voir... Bon, c'est vu: 4ms environ pour les 3 échanges, alors que le mien mets 1ms. Bon, okay, ealy optimization is evil, mais ne me sors plus l'argument que "Au niveau perf, c'est pas grand chose".
Citation :Est-ce que tu te dis "là je ne mets pas d'interface ça ne sert à rien" ? Si oui bah c'est pas bon du toutC'est pas ce que tu viens de faire pour un faux-valueobject? Là, t'es en train de recoder ce que le langage propose déjà (les returns) juste parce que tu veux pas reconnaitre que c'est utile.
Okay, tu t'affranchis du test is_integer en PHP7. Pourquoi considères-tu que le test $i > 0 est de nature différente de is_integer($i) ou de $i instanceof Machin?
Okay, t'as protégé ton code contre la PetitePeste. Maintenant, la méthode Hero::ageOfWomenIs(Age $age) n'a aucun intérêt à être appelée par une classe externe. Tu penses pas que ça pollue inutilement l'API publique de ton interface?
Par ailleurs, si un autre héro (disons, Attila, oui c'est un héro byzare) ne fait pas la distinction entre l'age de ceux qui demandent de l'argent, tu fais comment? Tu te traînes la méthode ageOfWomenIs inutilement (vive le dead code)? Tu crées une nouvelle interface, et tu bricoles Conan ? Tu vas péter des tas de trucs...