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 - srm - 05-06-2015 (05-06-2015, 04:14 PM)Xenos a écrit :Elle est forcément intentionnellement vide car tu as du créer la méthode.Citation : savoir si Hero à INTENTIONNELLEMENT refusé de donner de l'or à KidC'est pas défini dans le contrat que askGoldByKid() file du pognon à Kid. Comment tu sais si la méthode vide est intentionnelle ou non? T'as le même problème. Alors que dans askGold tu n'as rien à faire pour ne pas avoir de if pour Kid. et ton soucis en 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. RE: Compass : East Oriented - srm - 05-06-2015 (05-06-2015, 04:16 PM)niahoo a écrit : Ton exemple est pas bonOui une erreur en effet, mais comme tu le dis je fais un code à chaque fois vite fait J'ai géré le parallélisme au niveau des demandes, quand un Kid demande de l'or à un Hero il rentre en dialogue exclusif avec lui un autre Kid ne peux pas répondre à la place de l'autre c'est tout. RE: Compass : East Oriented - srm - 05-06-2015 Il faut bien garder à l'esprit que coder en East ne pose pas de problème technique. Nécessite juste bien plus de méthodes avec du petit code que peu avec beaucoup de codes (et ça n'a rien d'un mal ça, au contraire) et de penser sa façon de programmer différemment. Tu codes 100% avec des interfaces, si tu fais évoluer une interface, tu sais immédiatement ce qui casse et que tu dois mettre à jour. Et pour chaque appel de méthode tu as plus de souplesse de faire ce que tu veux selon les possibilités de l'interface qui t'appelle. Donc au final, je ne comprends pas trop pourquoi il y a un tel blocus. RE: Compass : East Oriented - Xenos - 05-06-2015 Ouep, tu dois retourner du Gold parce que t'as choisi d'implémenter l'interface avec un return Gold. La classe respecte le contrat qu'elle a choisi de passer, c'est pas une bonne chose ? Non, le Kid rentre en dialogue exclusif avec un nouveau Hero (le clone), pas avec le Hero qu'il a appelé (si on parlait en pointeurs, on le verrait direct). Je suis d'accord, il n'y a pas de problème technique de fond. Juste que East ajoute beaucoup de méthodes publiques (tout autant de maintenance et de risque de cassure), utilisées généralement par un seul point du code. T'as le droit de décomposer la grosse méthode en méthodes private pour l'alléger. Y'a pas de rapport entre East et les interfaces: tu peux faire du bon West en faisant 100% d'interfaces. East, c'est pas l'interface seggregation. J'attends toujours que tu me montres ton code pour faire "Hero donne 1x son or à Kid, 0.1x à Beggar, 2x à Femme, et 3x à Beggar+Kid+Femme". RE: Compass : East Oriented - niahoo - 05-06-2015 Citation :et ton soucis en 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.Mais qui veut faire ça !?! Non, allez, sérieusement, on fait pas ça. C'est le maaal. Pour ma part il n'y a pas de blocus, je trouve ça même très bien pour gérer une transaction assez compliquée entre deux objets. Mais pour l'appliquer à tout un projet pour des trucs aussi futiles que refiler une pièce jaune à David dans son TGV, non-merci, quelques tests bien sentis et une bonne méthode classique me conviennent généralement mieux. edit: 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 instanceof qui sont plus souples. Faut être quand même cohérent et éviter les vieux sophismes.
RE: Compass : East Oriented - niahoo - 05-06-2015
Tu clone le héros. C'est lui qui file de la thune. Tu as cloné sa thune. Tu ne gères pas le parallélisme. RE: Compass : East Oriented - srm - 05-06-2015 (05-06-2015, 04:35 PM)Xenos a écrit : Ouep, tu dois retourner du Gold parce que t'as choisi d'implémenter l'interface avec un return Gold. La classe respecte le contrat qu'elle a choisi de passer, c'est pas une bonne chose ?Si, le seul soucis, c'est que ta méthode ne peut plus rien faire d'autre. (05-06-2015, 04:35 PM)Xenos a écrit : Non, le Kid rentre en dialogue exclusif avec un nouveau Hero (le clone), pas avec le Hero qu'il a appelé (si on parlait en pointeurs, on le verrait direct).Il est donc bien en dialogue exclusif avec le Héro copie ou non, dans le sens ou lui seul connait cet instance de Héro et lui seul peut agir avec lui, c'est donc bien un dialogue exclusif non ? (05-06-2015, 04:35 PM)Xenos a écrit : Je suis d'accord, il n'y a pas de problème technique de fond. Juste que East ajoute beaucoup de méthodes publiques (tout autant de maintenance et de risque de cassure), utilisées généralement par un seul point du code. T'as le droit de décomposer la grosse méthode en méthodes private pour l'alléger.Oui bien d'accord. Mais si tu mets un getter, au final tu ne laisses pas vraiment au Héro de décider ce qu'il doit faire. Comment tu fais pour que le Héro mette un coup de poing à Kid si il est mal luné ?
Un truc du genre non ? Au final l'algo de ton Hero est en dehors de ton Hero :/ (05-06-2015, 04:35 PM)Xenos a écrit : J'attends toujours que tu me montres ton code pour faire "Hero donne 1x son or à Kid, 0.1x à Beggar, 2x à Femme, et 3x à Beggar+Kid+Femme". J'ai donné un exemple Beggar + Femme, tu as qu'à extrapoler pour le reste RE: Compass : East Oriented - srm - 05-06-2015 (05-06-2015, 04:37 PM)niahoo a écrit : Ok, comme je disais, plus haut je gère le parallèlisme au niveau de la discussion pas de la déduction de Gold RE: Compass : East Oriented - Xenos - 05-06-2015 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. Non, si mon Hero colle un pain au Kid, c'est du ressort de giveGold(): Code : class Hero... { J'attends l'exemple Beggar + !Femme parce que je ne vois pas comment tu l'extrapole. RE: Compass : East Oriented - niahoo - 05-06-2015 (05-06-2015, 04:45 PM)srm a écrit :(05-06-2015, 04:37 PM)niahoo a écrit : Bon ça sert à rien quoi OK, c'est plus clair comme ça. |