1 Bonnes Pratiques ● Indentation ● Présentation ● Initialisation des variables ● Conditions ● Gestion d'erreurs ● Conventions
2 Indentation ● Indenter correctement votre code – Est plus clair ainsi while(!stream.eof()) { std::string word; std::getline (stream,word); if(s != "END_IMAGE") { std::cout << word << std::endl; } else { std::cout << std::endl; return true; } while(!stream.eof()) { std::string word; std::getline(stream, word); if(s != "END_IMAGE") { std::cout << word << std::endl; } else { std::cout << std::endl; return true; }
3... Indentation – Un autre exemple du bon style while(!stream.eof()) { std::string word; std::getline (stream,word); if (word != "END_IMAGE") { std::cout << word << std::endl; } else { std::cout << std::endl; return true; } while(!stream.eof()) { std::string word; std::getline(stream, word); if(s != "END_IMAGE") { std::cout << word << std::endl; } else { std::cout << std::endl; return true; }
4 Présentation ● Une seule instruction par ligne ! ● Non ● Mais ● Évitez plus (que une) lignes vides if (word != "LENGTH") { result = "WARNING: word LENGTH is missing"; test = false; return;} if (word != "LENGTH") { result = "WARNING: word LENGTH is missing"; test = false; return; }
5 Initialisation des variable ● Une déclaration de variable doit généralement être suivie de son initialisation ● Éviter des noms très courts avec des caractères spéciaux ● Mieux int imag, f_larg, f_haut, f_v_p, f_rempl, f_f_imag; int a, b, c; int imag, f_larg, f_haut, f_v_p, f_rempl, f_f_imag; int index = 0; Int hight = 0; Int length = 0;, b, c; int length = 0; int index = 0; int length = 0; int height = 0;
6 Conditions ● Pensez à mettre des parenthèses dans vos conditions ● Exemple : – Que fait cette condition ? if ( ( a > 0 && b 0 ) ? if ( ( a > 0 ) && ( b 0 ) ) ? int imag, f_larg, f_haut, f_v_p, f_rempl, f_f_imag; int index = 0; Int hight = 0; Int length = 0;, b, c; If ( a > 0 && b 0 )
7 Gestion d'erreurs ● Prévoir des problèmes potentiels dans le code ● Tester le pointeur avant son utilisation ● Tester le résultat d'une opération qui peut échouer if ( myShape ) { myShape.Clear(); } if ( myShape ) { myShape.Clear(); } if ( myShape ) { myShape->Clear(); } std::string nom = “AgathaChristie”; std::string::size_type idx = nom.find(“Christie”); if ( idx != std::npos ) { nom.insert(idx, “ ”); }
8 Conventions ● Anglais – comme langage de programmation – Des noms des variables, fonctions, classes,... – Des commentaires (Doxygen) – Des messages de révisions (SVN)
9 Conventions des noms (1) ● Les noms de variables locales et des arguments des fonctions commencent par une lettre minuscule – int length = 0; – bool read(std::istream& stream) ● Dans les noms composés de plusieurs mots, les mots sont collés et commencent par une lettre majuscule (sauf le premier qui suit des règles générales) – readImage, myFile, myOutputFile
10 Conventions des noms (2) ● Les noms de classes commencent par une lettre majuscule – class Point; – class Shape; ● Les noms des données membres des classes commencent par le préfixe m_ – double m_x; – double m_y; ● Les noms des fonctions membres des classes commencent par une lettre majuscule – void Distance(Point point);