10-06-2009, 10:54 PM
Y a une question que je me pose sur ton exemple naholyr, pourquoi je serai obligé de mélanger ma page de pnj avec ma page de joueur et d'effectuer cette condition qui finalement me fige mon code concernant ces 2 fiches ?
Demain on me dit qu'il faut que les stats soient plus répartis sur la page et du coup je m'amuse à mettre des if ( isPnj ) partout dans ma page pour arranger ça ? :o
D'un point de vue modèle de données, je suis d'accord avec toi : on peut effectuer un héritage (en partant du principe que Personnage est abstrait bien entendu ).
D'un point de vue interface, hum... mouais, je peux très bien avoir 2 pages différentes appelant des fonctions communes d'affichage qui bien sûr seront juste là pour simplifier la maintenance du code quand il faudra changer des choses sur des parties communes des deux interfaces.
Après si je veux déterminer quelle page je dois appeler en cliquant sur un personnage (en supposant qu'une page mélange les pnj et les joueurs), éventuellement il y a cette condition que tu proposes, la magnifique hashmap pour retrouver la vue correspondante, un visitor ou du polymorphisme si le langage le permet... Bref les idées ne manquent pas.
Je vais donner un exemple de généricité qui pourrait être dérangeant selon moi : je fais un deuxième jeu basé sur le même système de personnage (donc le même framework). Mais cette fois-ci, je veux donner de l'importance au genre du personnage dans mon interface (et uniquement dans ce jeu). Je vais pas m'amuser à reprendre la même page et faire des conditions (if jeu2 && mâle)...
Donc là je recommence à refaire mes bouts de code génériques et je fais un truc qui ressemble à une usine à gaz pour pas grand chose puisqu'au final c'est un jeu différent, donc je peux faire des pages différentes non ?
Oui mais bon ça fait de la maintenance en plus si je modifie mon code vu que les pages se ressemblent énormément ce serait dommage de ne pas tout simplifier non ?
Dans ce cas précis, j'ai envie de dire tant pis pour la maintenance, ce sont deux jeux différents alors pourquoi me casser la tête à faire des bouts de code super complexe pour au final quelque chose de super simple ?
Et pareil au niveau modèle de données, si une donnée statistique apparait dans un cas et pas dans un autre, pourquoi j'irai me balader avec cette donnée puisqu'elle me sert à rien ?
Voilà ce que j'appelle la généricité gênante.
Demain on me dit qu'il faut que les stats soient plus répartis sur la page et du coup je m'amuse à mettre des if ( isPnj ) partout dans ma page pour arranger ça ? :o
D'un point de vue modèle de données, je suis d'accord avec toi : on peut effectuer un héritage (en partant du principe que Personnage est abstrait bien entendu ).
D'un point de vue interface, hum... mouais, je peux très bien avoir 2 pages différentes appelant des fonctions communes d'affichage qui bien sûr seront juste là pour simplifier la maintenance du code quand il faudra changer des choses sur des parties communes des deux interfaces.
Après si je veux déterminer quelle page je dois appeler en cliquant sur un personnage (en supposant qu'une page mélange les pnj et les joueurs), éventuellement il y a cette condition que tu proposes, la magnifique hashmap pour retrouver la vue correspondante, un visitor ou du polymorphisme si le langage le permet... Bref les idées ne manquent pas.
Je vais donner un exemple de généricité qui pourrait être dérangeant selon moi : je fais un deuxième jeu basé sur le même système de personnage (donc le même framework). Mais cette fois-ci, je veux donner de l'importance au genre du personnage dans mon interface (et uniquement dans ce jeu). Je vais pas m'amuser à reprendre la même page et faire des conditions (if jeu2 && mâle)...
Donc là je recommence à refaire mes bouts de code génériques et je fais un truc qui ressemble à une usine à gaz pour pas grand chose puisqu'au final c'est un jeu différent, donc je peux faire des pages différentes non ?
Oui mais bon ça fait de la maintenance en plus si je modifie mon code vu que les pages se ressemblent énormément ce serait dommage de ne pas tout simplifier non ?
Dans ce cas précis, j'ai envie de dire tant pis pour la maintenance, ce sont deux jeux différents alors pourquoi me casser la tête à faire des bouts de code super complexe pour au final quelque chose de super simple ?
Et pareil au niveau modèle de données, si une donnée statistique apparait dans un cas et pas dans un autre, pourquoi j'irai me balader avec cette donnée puisqu'elle me sert à rien ?
Voilà ce que j'appelle la généricité gênante.