C++ Convenzioni stile

Da Andreabont's Wiki.

Queste sono le convenzioni di stile che ho deciso di usare per il C++, queste regole sono del tutto personali e non hanno alcuna ripercussione sull'output del compilatore.
L'idea alla base di queste regole è l'aumento della leggibilità e della mantenibilità del codice scritto.

Spazi

  1. Metti uno spazio tra le parole chiave del linguaggio ed eventuali dati aggiuntivi (per esempio una condizione)
  2. Non mettere spazi tra il nome di una funzione/metodo e i suoi parametri (tra parentesi).
  3. Non mettere spazi nella dichiarazione del tipo da usare in un template.
  4. Nei parametri di una funzione/metodo mettere uno spazio dopo la virgola che li separa.
  5. Nel for metti uno spazio dopo ogni punto e virgola.
  6. Non mettere spazi tra gli operatori unari e l'operando a cui fanno riferimento.
  7. Metti uno spazio tra gli operatori binari e i loro operandi.
int funzione(int a, int b, int c) {
    if (!a and b) {
        foo<int> bar;
        doSomething();
    }
    for (int i = 0; i < 10; i++) {
        doSomething();
    }
}

Righe

  1. Nel prototipo di una funzione/metodo dichiarare il tipo di ritorno sulla stessa riga del nome.
  2. Nel prototipo di una funzione/metodo dichiarare, se possibile, tutti i parametri sulla stessa riga del nome.
  3. Se possibile usare la strategia "una istruzione per riga".
  4. Usare la strategia one-liner solo per piccoli gruppi di istruzioni che possono essere considerate atomiche, anche in senso lato.
  5. E' possibile usare il costrutto if one-liner solo quando si tratta di eseguire o meno una singola istruzione.

Blocchi di codice

  1. Usare sempre le parentesi graffe per delimitare un blocco di codice, con l'unica eccezione del costrutto switch.
  2. Se possibile non mettere la parentesi di apertura da sola su una riga, ma agganciarla alla fine dell'istruzione che interessa il blocco che stai dichiarando.
  3. Mettere la parentesi di chiusura su una nuova linea dopo l'ultima istruzione del blocco.
  4. In caso di else metterlo sulla stessa linea della parentesi di chiusura.
if (condizione) {
    doSomething();
} else {
    doSomething();
}

Indentazione

  1. Non usare i tab, indentare usando 4 spazi.
  2. Indentare ogni volta che il codice viene trattato come un unico blocco.

Switch

switch (Condition) {
    case 1:
        doSomething();
        break;
    case 2:
        doSomething();
        break;
}

Class

class Box {
public:
    double length;
    double breadth;
    double height;
};

Nomi

  1. I nomi di variabili, funzioni e metodi devono essere scritti in minuscolo o in CamelCase mantenendo sempre la prima lettera minuscola.
  2. I nomi di classi devono avere la prima lettera maiuscola, il resto va scritto in CamelCase.
  3. I nomi di costanti e define vanno scritti con tutte le lettere maiuscole.
  4. Se una variabile è di tipo booleano, o una funzione ritorna un valore blooeano, è utile che inizi per "is" o "did", in modo da esplicitarne il significato.
  5. Le funzioni o i metodi "getter" è utile che inizino per "get", così come le "setter" inizino per "set".