M_Konate
Messages postés6Date d'inscriptionjeudi 26 mai 2016StatutMembreDernière intervention31 mai 2016
-
26 mai 2016 à 21:38
M_Konate
Messages postés6Date d'inscriptionjeudi 26 mai 2016StatutMembreDernière intervention31 mai 2016
-
31 mai 2016 à 01:35
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
La section source est utilisée pour les choses suivantes:
Montrer une bonne pratique (comment faire un code propre).
Montrer une méthode pédagogique (bien commentée, avec une documentation).
Montrer une technique compliquée ou astuce peu évidente.
Ici, ta source ne répond a aucun de ces critères (code sale, pas d'explications de code ou de commentaire, technique peu avancé). Tu devrais plutôt poster celle-ci dans le forum, avec pour titre: "Jeu d'echec, critiquez mon travail".
Je vais mettre tout ce qui ne va pas ici, avant de supprimer cette source (qui a sa place sur ce site, mais pas dans cette section).
Nettoie ton projet ! Les *.exe, *.o, les fichiers sources non utilisées, n'ont rien à faire dans ce projet. Sur les 15 fichiers que tu as envoyés, seul 5 sont vraiment indispensables.
N'utilise pas Dev-C++ ! C'est un *très* vieil IDE, qui embarque un compilateur complètement dépassé. Préfère Code::Block, QtCreator or SublimeText2.
Attention, tout le monde n'a pas Windows. Si tu veux que ton code compile partout, évite les "system" (qui ne sont de toute façon pas indispensable).
Au niveau de l'utilisation du programme:
Il y a plein de règles qui sont mal gérées, mal protégées. Il est facile de faire planter ton programme. Par exemple, le fait de choisir un pion hors plateau fait planter ton programme.
Si on demande à déplacer un pion incorrectement (hors plateau), le programme accepte silencieusement.
Quand on déplace un simple pion, si on fait une demande invalide, alors le tour est sauté ! (On passe directement à l'autre joueur).
Au niveau du design de code:
Des fonctions monolithiques horribles... Une fonction ne devrait pas dépasser 25-30 lignes. Tu as certaines fonctions qui font près de 300 lignes !
Des copier-coller/répétitions partout: Les fonctions servent aussi à factoriser le code. Par exemple, verification_p1 et verification_p2 font pratiquement la même chose !
La classe tout_lois ne sert à rien.
Plutôt que de faire un std::vector<std::vector<char>>, un simple std::array<char, 64> aurait suffit (ou std::vector<char>). Il est possible de représenter un plateau avec un tableau à simple dimension. Voici un exemple de classe que tu peux réutiliser: https://github.com/cptpingu/game/blob/master/src/Core/Array2D.hh
Au niveau technique de code:
Les booléens ne sont pas utilisé de manière élégante. Par exemple: au lieu de "while (condition == true)" préfère utiliser "while (condition)". De même plutôt que "while (condition == false)" préfère "while (!condition)". À la place de "if(condition) return false else return true", préfère: "return condition;"
Des fois, tu confonds "=" et "==". Par exemple dans ton main, tu as un "while (ECHEC_ROI=true)".
Attention, les && et les || n'ont pas la même priorité. Il faut ajouter des parenthèses lorsque tu mélanges des && et des ||.
Il n'y a pas de ";" après un "}" d'une fonction ou méthode.
Si tu n'as qu'une seule ligne, il n'est pas nécessaire de mettre d'accolades.
Au lieu de copier-coller, utilise des boucles. Je pense notamment à la fonction init_body qui a beaucoup de répétitions pour rien. Une double boucle aurait fortement réduit sa taille !
Il y a plus de 30 warnings lorsque l'on compile. Il faut les corriger et ne pas les ignorer ! C'est souvent signe qu'il y a des soucis.
Plutôt que de faire des std::cout partout, chaîne-les !
31 mai 2016 à 01:35
Modifié par cptpingu le 30/05/2016 à 11:59
La section source est utilisée pour les choses suivantes:
Ici, ta source ne répond a aucun de ces critères (code sale, pas d'explications de code ou de commentaire, technique peu avancé). Tu devrais plutôt poster celle-ci dans le forum, avec pour titre: "Jeu d'echec, critiquez mon travail".
Je vais mettre tout ce qui ne va pas ici, avant de supprimer cette source (qui a sa place sur ce site, mais pas dans cette section).
Quelques conseils de départ:
Au niveau de l'utilisation du programme:
Au niveau du design de code:
Au niveau technique de code:
Exemple:
Devrait être:
Voir même (encore mieux):
Style de code:
30 mai 2016 à 00:25
Merci!