Salut,
J'ai survol� et je crois qu'il y a d'abord la conception � remanier.
ConfigMonde et Village peuvent se r�duire � des structures. Leur constructeur par d�faut ne sert � rien.
TribalTime a trop de responsabilit� => � refactoriser pour bien s�parer les diff�rentes responsabilit�s. J'ai l'impression qu'elle regroupe � la fois les responsabilit�s d'affichage, de contr�le et de mod�le (cf Mod�le/Vue/Contr�leur par exemple)
Pourquoi utiliser des float ?
Tu utilises � plusieurs reprises des int pour g�rer du 1/0 => bool.
J'aime pas (et ce n'est pas MISRA par exemple) les d�finitions multiples sur la m�me ligne :
1 2
| float vitMonde = ui->vitesseMondeAjout->text().toFloat(),
vitUnite = ui->vitesseUniteAjout->text().toFloat(); |
=>
1 2
| float vitMonde = ui->vitesseMondeAjout->text().toFloat();
float vitUnite = ui->vitesseUniteAjout->text().toFloat(); |
Il y a des constantes 'magiques' : exportation->setGeometry(20, 20, 360, 160); par exemple. Pourquoi 20,20,360,160 ? Ca repr�sente quoi ? Il y a-t-il un rapport entre elles ?
Je n'aime pas les tests � rallonge. Exemples :
1 2 3
| if(ui->xVillageCible->text().toInt() > 0 && ui->yVillageCible->text().toInt() > 0 && ui->xVillagePersonnel->text().toInt() > 0 && ui->yVillagePersonnel->text().toInt() > 0)
if(numMonde > 0 && vitMonde > 0 && vitUnite > 0)
if(nomVillage.length() > 0 && xVillage > 0 && xVillage <= 1000 && yVillage > 0 && yVillage <= 1000 && (groupeVillage == 0 || groupeVillage == 1)) |
On ne sait pas dire quel est l'objectif du test.
Je me m�fie des constructions : while(std::getline(listeMondes, ligneFichier) && stop == 0). En g�n�ral la seconde condition de sorties est soit parce que le parcours ne devait pas �tre complet soit une gestion cach�e d'erreur. Voir break (ou return si la responsabilit� a �t� isol�e dans une fonction d�di�e) dans le premier cas, et ne pas avoir peur des exceptions.
Ou quelque chose m'�chappe, ou :
1 2 3 4 5 6 7 8
|
for(my_tok::const_iterator i = tok.begin(); i != tok.end(); ++i)
{
if(a == 0)
element = QString::fromStdString(*i).toInt();
a++;
} |
doit pouvoir se r�duire plus clairement �
1 2 3 4 5 6
|
my_tok::const_iterator i = tok.begin()
if(i != tok.end())
{
element = QString::fromStdString(*i).toInt();
} |
Je pense qu'en construisant un it�rateur sur la lecture des enregistrements du fichier permettrait d'�crire une partie des fonctions � l'aide des algos de la STL de fa�on plus expressives (tout les while(std::getline(listeVillages, ligneFichier) && stop == 0))
Tu dois pouvoir utiliser des tuples pour �viter les boucles avec la variable a sur les cha�nes d�coup�es en token.
QDateTime heureArrivee = heureDepart.addSecs(-(ceil(60*(tempsUnites[ui->selectionUniteLente->currentIndex()]/(this->vitesseMonde*this->vitesseUnite))*nbCases)+delais));
... Une expression comme �a, je ne sais pas dire si la formule est valide, si les variables utilis�es dans la formule sont les bonnes, si les types sont bons.
ui devrait �tre g�r� dans un unique_ptr.
unites et tempsUnites sont des donn�es statiques, connues � la compilation et reconstruites � chaque fois. C'est dommage.
Tu n'as pas besoin de this-> pour acc�der aux variables membres.
Voil� pour une premi�re vol�e de remarques. Je pense qu'il y en a encore d'autres.
Sinon, les noms semblent bien appropri�s. Ca facilite grandement la lecture et �a aide � comprendre l'objectif de la variable/fonction/classe/etc..
Partager