[Résolu] Création de classes - 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 : [Résolu] Création de classes (/showthread.php?tid=676) |
[Résolu] Création de classes - zneman - 05-04-2008 Bien le bonjour Afin de me mettre pleinement dans l'utilisation des fonctions (que je n'utilisais jamais avant), je me suis lancé dans la POO. Après avoir passé ma matinée devant des tutos et des articles sur la POO, j'ai enfin compris son utilité et pour être franc... Ca me donne très envie (de coder ^^). Bref... Je suis en ce moment en train de revoir complètement le plan de mon script d'attaque principal. Je me suis dis "pourquoi faire les choses à moitié, commençons à y mettre de la POO tout plein !" xD Voila donc le début du début mais je voudrais savoir si je pars dans la bonne direction avant de me lancer dans les milliers de lignes Code PHP :
Ce script permet de calculer la puissance des armes de siège et de lui appliquer un pourcentage. Je peux aussi afficher la puissante nette et les pourcentages. Ce script est vraiment là à titre d'exemple, il est en réalité beaucoup plus complexe J'attends donc vos commentaires et suggestions (du moment que ceux ci sont bien argumentés xD). Ne faites pas trop attention au fond, comme je l'ai dis, ce n'est pas très optimisé et faut changer quelques petits détails (comme arrondir les pourcentages ). Merci d'avance ! Zneman RE: Creation de classes etc.. POO - Ren Nelos - 05-04-2008 Bonjour zneman. Première remarque qui s'apparente plus à un conseil, tu devrais faire des lignes de code moins longue. C'est très peu confortable de devoir déplacer la vue pour prendre connaissance du code. J'ajouterais également que tu devrais fournir des commentaires dans ta source surtout quand on commence quelque chose de nouveau pour soi. Cela dit, cela vaut pour n'importe quelle situation : commente ! Dans la même catégorie, je te conseillerais d'utiliser des noms de méthodes plus explicites. Par exemple, setMaVariable() plutôt que MaVariable(). Généralement, les noms de méthodes & de variables ne commencent pas par une majuscule ^_^ Ensuite, tu fais des $this->variableName. Seulement, tu as omis de déclarer les variables dans ta classe, qu'on appelle variables de classe. Ce qui suit est également à proscrire : Code PHP :
Code PHP :
Code PHP :
Enfin, y a tooooouuuuut pleins de choses ! Ren, au plaisir. RE: Creation de classes etc.. POO - Cartman34 - 18-04-2008 Quand je vois ca: Code PHP :
Je peux te conseiller d'utiliser un tableau qui référence tous les "armements". En reprenant cet exemple(mais c'est aussi applicable à tres autres fontions, tu pourrais supprimer $this-> AttaqueBrute et renvoyer directement la valeur. RE: Creation de classes etc.. POO - naholyr - 18-04-2008 Plusieurs commentaires : - Tu utilises des attributs d'objet sans les déclarer, ces $this->Variable n'ont pas de sens. - IGStaff++ : Tu définis des attributs parfois dans une méthode, sans jamais les utiliser ailleurs. Pourquoi alors passer par un attribut ? - Lignes trop longues => factorisation ! Dans ce cas, la factorisation t'aurait mené peut-être à la solution de Ren, mais qui n'apporte rien d'autre que de réduire la ligne. Je te propose de rendre ton code évolutif, de manière à ce que tu puisses ajouter extrèmement simplement de nouvelles armes. - Les méthodes "Afficher*" ne devraient pas exister, pour plusieurs raisons : -- Une méthode d'une classe "utilitaire" ne devrait jamais rien afficher directement -- Le seul intéret de ces méthodes semblent d'économiser des octets, sinon quel intérêt ? Or "Afficher" (8) prend plus de place que "echo " (5), donc vraiment aucun intérêt Tu ne t'en es pas rendu compte car tu n'as probablement pas assez réfléchi à ton code, mais tu manipules des objets dans cette classe, des objets de type "arme de siège", définis par : - un nom - une force - une quantité Code PHP :
Ta classe ne manipulera donc plus une simple liste d'arguments posés "en dur", mais plutôt une liste d'armes de sièges "concrète" : Code PHP :
Et au lieu d'appeler : Code PHP :
Code PHP :
Et surtout tu gagnes énormément en flexibilité, tu peux ajouter ou supprimer une arme sans rien toucher. RE: Creation de classes etc.. POO - Sephi-Chan - 18-04-2008 Merci Naholyr, je formulais le même conseil avant de voir ton message en faisant une prévisualisation. Sephi-Chan RE: Creation de classes etc.. POO - Cartman34 - 18-04-2008 Tu poussess la POO extremement loin naholyr. Même si j'en ai compris le but, je n'ai trop compris comment tu veux utiliser ce code: Citation :Et au lieu d'appeler : RE: Creation de classes etc.. POO - naholyr - 18-04-2008 Ce n'est pas poussé extrèmement loin, si on fait de l'objet on pense objet. Si c'est juste faire des classes pour faire des classes (histoire de grouper les fonctions) ça n'a pas plus d'intérêt que de faire du procédural et de bien organiser ses includes (ce qui n'est pas foncièrement "mal" soit dit en passant). La programmation orientée objet, c'est détecter les objets qui sont utilisés dans le processus, ici l'objet de base c'est l'arme de siège. L'objet que tu manipules regroupe une liste d'armes de sièges, donc il est normal de créer une classe "arme de siège" Cela apparait très nettement quand on voit la liste initiale des paramètres. RE: Creation de classes etc.. POO - zneman - 18-04-2008 Aie, j'en avais oublié ce message :$ Je suis pas mal occupé en ce moment IRL Honte à moi de n'avoir répondu Un grand merci à Ren Nelos pour sa réponse Merci aux autres aussi, je commence à comprendre Je posterais ce que j'ai fais plus tard dans la semaine je pense |