Compass : East Oriented - Version imprimable +- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org) +-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38) +--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51) +--- Sujet : Compass : East Oriented (/showthread.php?tid=7165) |
RE: Compass : East Oriented - niahoo - 05-06-2015 Bonjour, oui tout à fait, nous pouvons faire un devis tout compris pour réparer votre voiture. Nous vous l'envoyons en trois exemplaires imprimé sur feuille d'or à en-tete. Ah, par contre nous ne faisons pas les réparations ... RE: Compass : East Oriented - srm - 05-06-2015 (05-06-2015, 04:50 PM)Xenos a écrit : Je ne comprends pas ton argument: oui, elle ne peut rien faire d'autre: elle implémente l'interface qui dit "retourne ça". Pour moi, c'est comme si tu disais que la classe implémente l'interface Truc, donc elle est obligée d'implémenter Machin(Bidule $bidule): c'est pas souple. Bah réfléchis, je vais pas tout te mâcher, c'est pourtant simple Ça choque que moi que un getter va soit retourner un objet Gold, soit faire tout un tas d'autres choses et rien retourner ? Parce que pour moi c'est crade au possible... RE: Compass : East Oriented - niahoo - 05-06-2015 Citation :Ça choque que moi que un getter va soit retourner un objet Gold, soit faire tout un tas d'autres choses et rien retourner ? Citation :PHP7 avec giveGold c'est que si tu veux faire autre chose que retourner du Gold car tu es dans un cas particulier, tu ne peux pas. Donc tu restreints ton code il est moins souple Comme je le disais, si on pouvait arrêter les vieux arguments réthoriques pour se concentrer sur le sujet ça serait sympa. je me cite : Citation :Tu ne peux pas prôner la souplesse là (surtout pour promouvoir une pratique bien dégueu) et prôner avant la rigidité d'avoir des méthodes publiques au lieu d'utiliser des
RE: Compass : East Oriented - srm - 05-06-2015 East une pratique bien dégueu ? Ma foi. Je prône la rigidité de l'API publique et la souplesse du code interne. Ça semble logique non ? RE: Compass : East Oriented - Xenos - 05-06-2015 Ça choque que moi que un getter va soit retourner un objet Gold, soit faire tout un tas d'autres choses et rien retourner ? Ca pas ce que East veut autoriser?! Doublé par niahoo ^^ (qui formule mieux que moi en plus) La rigidité de l'API publique et la souplesse du code interne, c'est carrément ce que je t'ai montré tout à l'heure (j'ai pu changer les critères de choix de ma méthode sans rien péter de l'extérieur, si c'est pas une preuve de découplage ça). Je maintiens: si tu veux que le Hero donne 2x son or si c'est Beggar+Femme, 4x si c'est Kid+Beggar, 1x pour les autres, tu vas faire: Code PHP :
? O.OTu m'étonnes que t'avais pas envie de prendre le temps de me montrer... J'ai l'impression d'avoir dupliqué du code... Et j'ai pas le cas askGoldByBeggar qui serait demandé par un Beggar+Kid... (ça me semble le plus embêtant, car ça voudrait dire que East interdit certaines features). Puis j'ai iAmBeggarByWomen qui est exposée en publique, c'est pas génial: une Women pourrait appeler cette méthode directement et racketer le Hero. Donc soit j'ai fait de travers et je veux bien voir ta solution, soit ça sent l'usine à gaz. RE: Compass : East Oriented - niahoo - 05-06-2015 Non bien dégueu : si ta fonction retourne un int mais que dans un certain cas on va faire autre chose, ça c'est dégueu, c'est de ça dont je te parlais. Encore une fois, je ne dis pas que East est mauvais. Effectivement le terme "promouvoir" prête à confusion. Mais que ça ne t'empêche pas de voir quelle incohérence est mise en valeur par mon post : tu te contredis largement. Tu défends ton steak et c'est très bien, mais se contredire ça ne fait que saper ton argumentaire. RE: Compass : East Oriented - srm - 05-06-2015 Je te rappel quand même que je montre du code depuis tout à l'heure, j'ai le droit de fatiguer un peu Et je n'ai pas toutes les réponses en East, il suffit que je code mal un exemple en East parce que je n'y ai pas réfléchis assez pour que tout de suite vous montez au créneau pour dire que East c'est nul, donc pas évident Pour le ??? je savais pas que tu bloquais sur ce point précis. Faudrait que j'y réfléchisse bien. Car là en fait on est en train de déterminer les différentes natures d'un objet d'après ses différentes interfaces, je ne sais pas si c'est la bonne façon de faire, j'en ai pas l'impression. Dans ton cas l'API publique n'est pas rigide, elle est ouverte, c'est différent, elle accepte n'importe quoi c'est un peu comme si tu faisais un débat typehint ou pas du coup. Et bon tout le monde te dira que si tu mets du typehint tu minimises les risques. Et là tu en mets pas donc bon.. C'est un autre débat que East sur le coup, car en East tu pourrais très bien faire comme tu dis. Mais c'est pas considéré comme propre moi je trouve. Pour avoir une opinion plus clair à ce sujet te concernant. Moi dès que je passe en PHP7 100% de mes arguments seront typés dans une méthode et la sortie également. Quant à toi tu feras comment ? RE: Compass : East Oriented - Xenos - 05-06-2015 Nan mais je t'ai dis que tu pouvais typehinter ta méthode, je t'ai même donné le lien direct dessus. Dans le dernier exemple de code, j'ai changé la façon dont le Barman réagit suivant si l'appeleur est Religieux ou non. Ma méthode est typehinté car elle accepte un certain type d'objet, et elle instanceof car son algorithme interne diffère suivant ce qui l'appelle. Ton areYou* n'est d'ailleurs qu'une réécriture de instanceof. Mélange pas le débat du "le typehint c'est bien ou mal" avec le débat actuel qui est "le typehint dit je gère quoi, mais la méthode en interne peut bien faire des instanceof si elle veut renvoyer différentes réponses suivant le genre de l'objet". En PHP7, les arguments qui en ont besoin seront typés (si ma méthode accepte n'importe quoi, grand bien lui fasse, je ne vais pas la typehinter de force ), de même pour les retours. East, l'idée est peut-être attrayante, mais si en y réfléchissant tu finis par tomber sur des cas impossibles, tu seras prêt à renoncer à East? Juste histoire de savoir si on est dans une optique de croyance ou non... RE: Compass : East Oriented - niahoo - 05-06-2015 On dit pas que c'est nul. Et bon, tu peux fatiguer mais vu que on est juste en train d'implémenter une pauvre transaction de pièces d'or entre deux personnes seulement ... si East est génial, ça devrait prendre 5 secondes de moins qu'avec un getter et des instanceof , soit 0 secondes si je calcule bien.Moi si j'ai bien compris East, c'est la classe qui fournit une API qui définit l'interface du code appelant. donc pour moi tout ça tient dans Beggar .
RE: Compass : East Oriented - srm - 05-06-2015 Après réflexion je pense qu'il faut plutôt créer une nouvelle interface pour chaque composition, par exemple : interface BeggarWomen implements Beggar, Women Ça me semble plus intelligent comme façon de résoudre le problème. |