Questa era solo una domanda che mi stavo chiedendo in termini di best practice. Sto scrivendo un piccolo programma C ++ che usa un'interfaccia per implementare una funzione.
Nella classe che usa l'interfaccia (cioè eredita dalla classe di interfaccia), è per me una cattiva pratica usare le variabili membro così non devo continuare a ripeterle ogni volta che la funzione entra in ambito?
Supponiamo di avere questa interfaccia:
class base{
public:
virtual ~base() {};
virtual int method(int num) = 0;
};
E la seguente classe la eredita per implementare la funzione metodo .
class usesinterface : public base {
public:
usesinterface() {};
virtual int method(int num){ // Always adds 5 to the number
return num_ + num;
}
private:
int num_ = 5;
};
Memorizza num_
come cattiva pratica di un membro della classe o considerata errata? Ha più senso scrivere:
virtual int method(int num){
const int number = 5;
return number + num;
}
Sono consapevole che puoi solo scrivere + 5 per salvare la seccatura per questo esempio, ma questa è solo una versione semplificata di un problema che sto guardando.
MODIFICA 1:
In realtà, la variabile che sto memorizzando nella mia classe / ridefinendo ogni chiamata di funzione è una tabella di ricerca che viene utilizzata solo all'interno di questa chiamata di funzione singolare. Tuttavia, se lo metto nella funzione, la funzione stessa diventa molto prolissa (molto più leggibile la leggibilità del codice) e, senza un'ottimizzazione, credo che ridistribuirebbe continuamente la tabella di ricerca.