10-06-2009, 12:22 AM
J'ai envie de dire que comme Joueur et Pnj ont normalement un parent commun, l'affichage peut prendre en compte cette particularité...
Ton exemple me semble à partir de là être un contre-exemple de ce que tu essaies de démontrer, je ne vois absolument pas en quoi ceci serait vraiment abherrant ou bloquant de quelque manière que ce soit :
Ceci étant dit, je comprends ton interrogation de départ : le "tout générique" te semble mauvais parce qu'une course éternelle.
Le mot-clé c'est **pragmatisme**
- Si un bout de code strictement identique aux variables près est utilisé à N endroits différents (N étant supérieur ou égal à 2), alors le factoriser est une bonne chose. C'est toujours vrai, et d'autant plus que N est grand.
- Si dans les bouts de code qui se ressemblent il y a des différences de traitement, alors ça s'étudie au cas par cas (c'est le cas de ton exemple, en l'occurrence je préfèrerais factoriser, mais sans avoir le détail difficile d'être vraiment catégorique).
- Si un bout de code n'est utilisé qu'à un endroit, mais qu'on le met dans un coin pour qu'il soit réutilisable à l'avenir, c'est quasiment toujours mauvais, parce que d'une part on anticipe un besoin qui n'existe pas encore et n'existera peut-être jamais, mais surtout parce que le jour où le besoin apparaitra on devra très certainement paufiner à ce moment-là. Autant tout faire au moment où le besoin apparait. Note : c'est évidemment faux lorsqu'on est dans l'optique de l'écriture d'une librairie d'outils, ou lorsqu'on déplace ce code non pas dans l'objectif de factoriser mais de le ranger au bon endroit par rapport à son architecture
Bref, ce n'est que du pragmatisme et du bon sens, donc être "pour" ou "contre" n'a pas de sens.
Code :
class PersonnageJoueur extends Personnage { ... }
class PersonnageNonJoueur extends Personnage { ... }
Code :
... stats d'un objet Personnage ...
<?php if ($personnage instanceof PersonnageJoueur) include_partial('stats_joueur', array('joueur' => $personnage)) ?>
<?php if ($personnage instanceof PersonnageNonJoueur) include_partial('stats_pnj', array('pnj' => $personnage)) ?>
... fin des stats communes ...
Ceci étant dit, je comprends ton interrogation de départ : le "tout générique" te semble mauvais parce qu'une course éternelle.
Le mot-clé c'est **pragmatisme**
- Si un bout de code strictement identique aux variables près est utilisé à N endroits différents (N étant supérieur ou égal à 2), alors le factoriser est une bonne chose. C'est toujours vrai, et d'autant plus que N est grand.
- Si dans les bouts de code qui se ressemblent il y a des différences de traitement, alors ça s'étudie au cas par cas (c'est le cas de ton exemple, en l'occurrence je préfèrerais factoriser, mais sans avoir le détail difficile d'être vraiment catégorique).
- Si un bout de code n'est utilisé qu'à un endroit, mais qu'on le met dans un coin pour qu'il soit réutilisable à l'avenir, c'est quasiment toujours mauvais, parce que d'une part on anticipe un besoin qui n'existe pas encore et n'existera peut-être jamais, mais surtout parce que le jour où le besoin apparaitra on devra très certainement paufiner à ce moment-là. Autant tout faire au moment où le besoin apparait. Note : c'est évidemment faux lorsqu'on est dans l'optique de l'écriture d'une librairie d'outils, ou lorsqu'on déplace ce code non pas dans l'objectif de factoriser mais de le ranger au bon endroit par rapport à son architecture
Bref, ce n'est que du pragmatisme et du bon sens, donc être "pour" ou "contre" n'a pas de sens.
Ressources [PHP][MySQL][prototype.js]