05-06-2015, 03:48 PM
(05-06-2015, 03:42 PM)Xenos a écrit : Et entre des deux exemples, c'est dans lequel où le monde extérieur a plus d'informations sur l'algorithme interne de la classe? Dans giveGold(GoldReceiver) (je te rappelle que j'ai jamais dit que le typehinting était interdit, juste que le typehinting n'a pas à refléter l'algorithme interne de la méthode) ? Ou dans askGoldBy*?
Et le plus simple à maintenir, c'est quoi? 3 méthodes publiques dans une interface? Ou une seule? Et niveau évolutivité, si tu veux donner plus d'or à un Beggar+Kid+Femme tu fais comment dans ton code? Et pour donner moins à un Kid+!Femme?
Je ne vois pas en quoi faire transpirer ainsi l'algorithme interne d'une méthode dans sa signature publique est une bonne chose.
Si tu veux donner plus d'or à un Beggar Kid Femme, tu peux par exemple quand tu reçois un Beggar lui dire :
$beggar->areYouWomen($this)
Et là libre à lui de te le dire, il peut avoir honte et ne pas vouloir te le dire.
Avec ta méthode il ne peut pas.
On ne fait pas du tout transpirer comme tu dis l'algo dans les méthodes, on dit avec quel objet on sait travailler, c'est bien différent. Afin de pouvoir modifier son comportement interne sans risque de casser ce qui gravite autour de la classe.