Best Practices c++

Un po di best practices e consigli da seguire per del codice ben fatto:

1. se non c’è nel vostro progetto, create un file header chiamato “stdafx.h”, in cui vanno messe per convenzione tutte le inclusioni di header di sistema o di librerie di terze parti, ovvero gli #include <…>, e tutte le direttive “using namespace …”

NON vanno inclusi assolutamente gli header scritti da voi.

2. Quando creiamo un header, è molto importante aggiungere subito la direttiva #pragma once, che impedisce che l’header venga incluso più di una volta.

3. Se all’interno della nostra classe facciamo riferimento ad altre classi, possiamo evitare di fare l’include del rispettivo header, utilizzando la forward declaration, ovvero “class NomeClasse;”. Il compilatore accetta questa dichiarazione come un tipo e ci consente di compilare.

Gli unici #include che andrebbero fatti sono quelli nel file .cpp relativo all’omonimo file .h e quelli relativi alle classi che stiamo eventualmente estendendo/ereditando.

4. Usare una convenzione standard per i nomi di membri, variabili e metodi è la base per lavorare in gruppo senza perdere tempo a interpretare geroglifici. Quella suggerita prevede che le variabili membro siano chiamate m_+iniziale tipo+nome esplicativo con notazione camel case. Ad esempio:

m_vWarrior = variabile membro di una classe, di un tipo generico v), che rappresenta molto probabilmente un’istanza di una classe Warrior

m_pWarrior = variabile membro di una classe, di tipo puntatore (p), che rappresenta molto probabilmente un’istanza di una classe Warrior

m_iWarEnergy = variabile membro di una classe, di tipo intero, che conterrà l’energia di un Warrior

5. Potreste avere degli errori riguardo a delle intestazioni precompilate non trovate in fase di compilazione. Per evitarlo, andate nelle proprietà del progetto, alla voce Proprietà di configurazione -> C/C++ -> Intestazioni Precompilate  e impostate la voce “Intestazione Precompilata” a “Senza Intestazioni Precompilate”

6. Nella definizione di metodi virtual, quindi ridefinibili in una classe derivata, è bene tener presente che un metodo virtual in fase di esecuzione va ad occupare un indirizzo di memoria (4 byte) nella “virtual table”, che si occupa di capire quale metodo deve richiamare quando ad esempio viene richiamato un metodo presente sia nella classe base che nella classe ereditata. Per cui se non è necessario e sapete che non ci sarà mai l’esigenza di sovrascrivere, non fate metodi virtual.

 

 

 

Annunci
  1. Lascia un commento

Rispondi

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...

%d blogger hanno fatto clic su Mi Piace per questo: