PROGRAMME DE JEU DE MPT

cptpingu Messages postés 3837 Date d'inscription dimanche 12 décembre 2004 Statut Modérateur Dernière intervention 28 mars 2023 - 29 févr. 2012 à 15:15
cptpingu Messages postés 3837 Date d'inscription dimanche 12 décembre 2004 Statut Modérateur Dernière intervention 28 mars 2023 - 29 févr. 2012 à 15:15
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/54108-programme-de-jeu-de-mpt

cptpingu Messages postés 3837 Date d'inscription dimanche 12 décembre 2004 Statut Modérateur Dernière intervention 28 mars 2023 123
29 févr. 2012 à 15:15
Bonjour.

Quelques conseils:
- Évite les using namespace std, voir: http://0217021.free.fr/portfolio/axel.berardino/articles/bon-usage-using-namespace
- Évite d'utiliser "system", tu perds en portabilité pour une fonctionnalité à l'intérêt très limité.
- Découpe ton code en petite fonction. Là c'est assez indigeste. Une fonction ne devrait pas dépasser 50 lignes.
- Si tu utilises des booléens, utilise les pour de vrai ! bool quitter(1) => bool quitter = true;
- Lorsque cela est possible, préfère les iterator. "for (int i(0); notes.size() > i; i++)" => for (std::vector::const_iterator it = notes.begin(); it != notes.end(); ++it)
- On évite de retourner de gros objet par copie ! Ex: vector <string> dictionnaire(string nomFichier) devrait être: void dictionnaire(std::vector<string>& res, const std::string& nomFichier)
- Pour gérer des erreurs, on utilise soit: Des exceptions, un code de retour, ou des asssert. Mais on ne fait pas de std::cout à l'arrache dans une fonction "outil".
- La fonction: string melanger(string mot) est inutilement compliqué et provoque une copie avec ajouts successifs, désastreux en terme de performance. Tu peux largement l'améliorer en ne modifiant que la chaîne en cours.
- La fonction "unsigned int nbAleatoire(int range)" est elle aussi trop compliqué pour ce que ça fait. Un seul appel à rand() suffit. Faire un appel à rand par tranche de 16 bits ne fera pas un meilleur aléatoire... Si tu veux du "meilleur" aléatoire, voir les std::mersenne_twister du C++0x.
- En C++, on inclut cmath et non math.h. cstdlib et non stdlib.h, etc...
- Au lieu de "dico.size() == 0" préfère "dico.empty()"

Il y a aussi un manque flagrant de commentaire. N'oublie pas que tu destines ton code à être relu par des débutants. Voir: http://0217021.free.fr/portfolio/axel.berardino/articles/ecrire-de-bons-commentaires

Pour conclure: Le programme est correcte, mais la forme est à revoir. Il y a pas mal de choses à réécrire au propre. Si vous êtes débutant et que vous lisez ceci: "Attention ce programme n'est pas encore au niveau et il contient des pratiques à éviter absolument !"
Rejoignez-nous