10-08-2011, 10:22 AM
Pour poursuivre un petit peu le post de Sephi-chan, il y a plusieurs points que je mettrais au clair.
Premièrement, ton modèle, pour ma part, j'aime bien, avant de m'occuper de l'affichage, mettre au point des objets qui tiennent la route, avec une classe par fichier. Et une classe qui gère ton affichage. Tes autres objets vont communiquer avec cette classe pour lui transmettre les messages d'erreurs destinés à l'utilisateur.
Secondement, une classe abstraite qui gère les connexions avec ta base et les données de tes joueurs. Qui intègre également un Singleton, c'est pas mal non plus
Concernant l'URL Rewriting, je ne te le conseillerai pas sur un jeu par navigateur, surtout si tu commences par un mutualisé. Parce que le rewriting, c'est vraiment gourmand en ressource...
Pour revenir sur la base de donnée je te conseillerais de faire dès que possible des INNER JOIN plutôt que des LEFT ou RIGHT JOIN. MySQL (si tu l'utilises) ne gère pas de manière optimale les jointures externes. Petit exemple, j'ai fait un benchmark récemment, la même requête avec LEFT JOIN et INNER JOIN, sur une série de 1.000.000 de requêtes sur ma base (grosse requête qui plus est). Résultat 8 minutes pour le LEFT, 7 secondes pour INNER, oui c'est impressionnant.
Les fonctions quand à elle, ne doivent faire qu'une chose, vraiment c'est important pour la lecture et la maintenabilité. Par exemple, pour l'affichage d'une page avec des droits spéciaux, j'aime bien faire 3 fonctions privées et une publique, la publique qui s'intégrera au template avec un nom très clair et les privées qui gèrent le fonctionnel, une pour la récupération MySQL, une pour la structure de contrôle (si niveau supérieur à 85, si argent inférieur à 1000) et la dernière qui gère les connexions avec les logs, l'affichage (message d'erreur) et le retour au contrôlleur (architecture MVC).
J'ai vu que tu parlais de l'opérateur ternaire. Tu as raison, c'est super optimisé, mais ça freine un peu la lisibilité, je dirais qu'il faut l'utiliser avec parcimonie.
Voilà, pour le moment, c'est tout ce que j'aurais à dire et qui me vient à l'esprit. Si tu as d'autres questions n'hésites pas !
Premièrement, ton modèle, pour ma part, j'aime bien, avant de m'occuper de l'affichage, mettre au point des objets qui tiennent la route, avec une classe par fichier. Et une classe qui gère ton affichage. Tes autres objets vont communiquer avec cette classe pour lui transmettre les messages d'erreurs destinés à l'utilisateur.
Secondement, une classe abstraite qui gère les connexions avec ta base et les données de tes joueurs. Qui intègre également un Singleton, c'est pas mal non plus
Concernant l'URL Rewriting, je ne te le conseillerai pas sur un jeu par navigateur, surtout si tu commences par un mutualisé. Parce que le rewriting, c'est vraiment gourmand en ressource...
Pour revenir sur la base de donnée je te conseillerais de faire dès que possible des INNER JOIN plutôt que des LEFT ou RIGHT JOIN. MySQL (si tu l'utilises) ne gère pas de manière optimale les jointures externes. Petit exemple, j'ai fait un benchmark récemment, la même requête avec LEFT JOIN et INNER JOIN, sur une série de 1.000.000 de requêtes sur ma base (grosse requête qui plus est). Résultat 8 minutes pour le LEFT, 7 secondes pour INNER, oui c'est impressionnant.
Les fonctions quand à elle, ne doivent faire qu'une chose, vraiment c'est important pour la lecture et la maintenabilité. Par exemple, pour l'affichage d'une page avec des droits spéciaux, j'aime bien faire 3 fonctions privées et une publique, la publique qui s'intégrera au template avec un nom très clair et les privées qui gèrent le fonctionnel, une pour la récupération MySQL, une pour la structure de contrôle (si niveau supérieur à 85, si argent inférieur à 1000) et la dernière qui gère les connexions avec les logs, l'affichage (message d'erreur) et le retour au contrôlleur (architecture MVC).
J'ai vu que tu parlais de l'opérateur ternaire. Tu as raison, c'est super optimisé, mais ça freine un peu la lisibilité, je dirais qu'il faut l'utiliser avec parcimonie.
Voilà, pour le moment, c'est tout ce que j'aurais à dire et qui me vient à l'esprit. Si tu as d'autres questions n'hésites pas !