Stile di codifica: ----------------- 1) non usare il TAB (confonde le idee agli strumenti di formattazione del codice, come indent e bcpp); 2) usare rientri di 4 spazi; 3) una sola istruzione semplice per riga (eccetto assegnamento multiplo): n++; i = 2*j; operation(x); x = y = log(z); // assegnamento multiplo, ok 4) una sola dichiarazione di variabile per riga: int i; int j; int* p = &j; 5) nessuno spazio attorno agli operatori moltiplicativi: i = 2*j; i = 2/j; 6) uno spazio a destra e a sinistra degli operatori additivi, di assegnamento e di relazione: i = 2 + j; i = 2 - j; b = x < delta; 7) dichiarazioni di puntatori: int* p; (non int *p;) 8) uso di puntatori: *p = *q; // senza spazio fra * e identificatore) p->operation(); 9) istruzioni composte: if (n == m) // uno spazio fra if e ( n++; if (n == m) n++; else m--; if (n == m) { n++; cout << n; } else if (n > m) { // par. graffa chiusa allineata con if n--; cout << n; } else { m--; cout << m; } try { something(); } catch (Exception) { somethingelse(); } analogamente per for e while; 10) dichiarazioni di classi: class Element { Element* owner_; list ownedElements_; public: void setOwner(Element* arg); }; 11) nomi di membri dato con _ finale: Element* owner_; 12) NON scrivere il corpo delle funzioni dentro alla dichiarazione della classe: class Sbagliato { public: void nogood(int n) { // NO cout << n*n; }; }; 13) definizione di funzioni: void // tipo restituito, a col. 0 Element:: // classe, a col. 0 setOwner(Element* arg) // nome a col. 0, parametri { // parentesi iniziale, a col. 0 // ... } 14) usare commenti '//' all'interno delle funzioni, commenti '/*...*/' all'esterno; 15) righe di 80 caratteri al massimo; 16) commenti Doxygen: mettere il commento per una classe prima della stessa. 17) NON mettere definizioni di funzioni e variabili nei file di intestazione. I file di intestazione possono contenere solo DICHIARAZIONI di tipo, di costanti, di funzioni e di template.