Horton's Odyssey

Signaler
Messages postés
3
Date d'inscription
dimanche 16 mars 2014
Statut
Membre
Dernière intervention
18 mars 2014
-
Messages postés
3
Date d'inscription
dimanche 16 mars 2014
Statut
Membre
Dernière intervention
18 mars 2014
-
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/100455-horton-s-odyssey

Messages postés
3
Date d'inscription
dimanche 16 mars 2014
Statut
Membre
Dernière intervention
18 mars 2014

Dans un premier temps, merci de prendre le temps de commenter, ça faire toujours plaisir. ^- ^
Il faut savoir qu'au moment ou j'écrivais ces lignes de codes, je m'efforçais de passer le moins de temps possible à réfléchir, dans la mesure ou le temps était compté. D'autre part, mon usage du C++11 n'en était qu'à ses balbutiements. ;)
Ici en l'occurrence, toutes tes critiques sont justifiées et je n'ai rien à contester. Cependant je remarque aussi, quand bien même un code bien écrit ne nécessite pas de commentaire, que celui-ci en aurait peut-être bien besoin à certains endroits. :)
Merci. ^- ^
Messages postés
3833
Date d'inscription
dimanche 12 décembre 2004
Statut
Modérateur
Dernière intervention
11 juin 2021
124
Bonjour.

Le jeu est très bien fait, et agréable. Au niveau conceptuel, il n'y a rien à redire, c'est propre. On sent qu'il y a eu un bon travail de finition. De plus, la présentation du projet est claire, et bien amenée. Avoir mis une petite vidéo et un lien vers les binaires, est une très bonne idée.

Au niveau technique, pas de remarques particulières. Normalement, je pointe des maladresses de code, ou des parties aisément améliorables, mais là c'est très bien codé. À la place je vais plutôt indiquer des points forts sur lequel un débutant pourrait se pencher:
- Pas d'utilisation de using namespace
- Utilisation de lambda
- Ordre d'inclusion des headers intelligent (limite au maximum les risques d'effets secondaires)
- Utilisation de .hpp et non .h
- Liste d'initialisation dans le constructeur dès que possible
- constitude dès que possible

J'ai quelques critiques, extrêmement mineures (faut vraiment pinailler pour trouver quelque chose :p):
- Il serait pas mal de préciser que c'est un projet C++11 (présence de auto + lambda + nullptr)
- Si c'est fait en C++11, pourquoi y-a-t-il mélange de notions ? Je veux dire par là, que "auto" est utilisé à certains endroits et pas d'autres. Je vois aussi un utilitaire "foreach", alors que le foreach existe en C++11. Auriez-vous changer de compilateur en cours de route ?
- Quand un "return" est présent, il n'est pas nécessaire de mettre un "else" derrière.
- Plutôt que "collection.size() != 0", préférez "!collection.empty()"
- Pour le code du singleton, la version choisie n'est pas la meilleure. Je conseille généralement un singleton dont le membre n'est pas alloué, mais est static. C'est plus simple à coder, plus robuste (pas de souci de concurrence dans un environnement multi-threadé et pas de gestion des allocations à faire). Voir ici: https://github.com/cptpingu/game/blob/master/src/Core/Singleton.hxx
- Pour le côté "random", il faut éviter rand/srand ! Préférer un std::mersenne_twister (disponible à partir de C++11). Voir: https://github.com/cptpingu/game/blob/master/src/Core/Random.cc et https://github.com/cptpingu/game/blob/master/src/Core/Random.hh
- En C++, une fonction qui ne prend pas d'argument, n'en prend pas ! C'est-à-dire qu'il n'y a pas un argument "void" (c'est un reliquat du C, plus nécessaire).