[ ] Code testé sur les VMs [ ] Commentaires : entêtes de méthodes commentées dans les .hpp [ ] Conception POO [ ] Pas de test de type (mais plutôt polymorphisme) [ ] Pas de méthode avec un corps vide (alors qu'elles devraient être virtuelles pures) [ ] Pas de relation d'héritage inadaptée (relation EST-UN respectée) [ ] Virtualité des destructeurs dans les hiérarchies polymorphiques [ ] Pas d'attributs protégés [ ] Pas d'attributs masqués (par exemple un attribut position dans Collider et un attribut position dans Animal) [ ] Pas de répétition de code dans les méthodes d'une hiérarchie de classes lorsque c'est évitable [ ] Pas de code placé au mauvais niveau d'une hiérarchie de classe (par exemple du code spécifique à Animal qui se retrouverait dans OrganicEntity). [ ] Code C++ [ ] Noms des identificateurs bien choisis (pas de noms fantaisistes ou incompréhensibles) [ ] Tous les objets ayant fait l'objet d'un new font bien l'objet d'un delete (mettre à nullptr seulement ne suffit pas, il faut faire un delete) [ ] Pas de copier-coller de code [ ] Méthodes modularisées (de taille raisonnable, le corps d'une méthode devrait en principe pouvoir être lu dans la fenêtre d'édition sans qu'il n'y ait besoin de dérouler la fenêtre) [ ] La constness est utilisée à bon escient (méthode qui ne modifient pas les attributs marquées comme const, utilisation du passage de paramètre par référence constante au lieu du passage par valeur) [ ] Si une méthode appelle plusieurs fois une méthode m avec les mêmes paramètres, vérifier s'il n'est pas plus efficace de n'appeler m qu'une fois et de stocker le résultat dans une variable. [ ] Les expressions booléennes sont utilisées de façon concise: if (condition) return true; else return false; devrait s'écrire return condition; if (condition == true) devrait s'écrire if (condition), et if (condition == false) devrait s'écrire if (not condition) [ ] Pour le rendu final: le code doit être nettoyé des instructions de debugging.