Sto usando C in uno stile OOP minimo ed efficiente per costruire un motore di gioco. Un problema che ho iniziato ad affrontare mentre il codice del motore si stabilizza è la mia (precedente) scelta di usare this
. Ad esempio, ho:
void Engine_initialise(Engine * this);
void Window_terminate(Window * this);
Window * this
contiene un riferimento al singleton Engine
. Ora, diciamo che faccio riferimento a questo Engine
membro sia da Engine_initialise(..)
sia da Window_terminate(..);
. Nel primo sarà this->member
, ma nel secondo sarà ( window->
) engine->member
.
Questa incoerenza mi infastidisce; se è uguale, dovrebbe cercare lo stesso. E visto che lavoro esclusivamente con un editor di testo senza IDE, voglio un singolo find-replace su tutti i file, invece che su più find-replace.
Consideriamo un altro esempio, in cui non esiste solo un argomento del tipo specificato.
Blob_compare(Blob * this, Blob * that);
vs.
Blob_compare(Blob * blob, Blob * blobOther); //or blob1 and blob2, or whatever
... nonostante la mia preferenza per perdere this
, la prima sembra migliore in quanto è descrittiva e concisa.
Domanda : esistono argomenti particolarmente validi per continuare a utilizzare this
come nome dell'istanza dell'oggetto corrente nelle varie funzioni? Sto pensando di sostituire tutto this
con engine
(o simile). Mi piacerebbe accontentarsi di uno standard di codifica in questo senso, per tutto il codice C.
Sto chiedendo l'utilità di this
come argomento della funzione primary ; i nomi di altri parametri di tipo simile non sono di grande importanza qui nonostante il mio secondo esempio. Per me sembra ragionevole, se la funzione ha come prefisso Blob_
, per supporre che blob
si riferisca all'istanza corrente. E no, non mi interessa davvero una virgola circa i tipi di ridenominazione - questi sono ben sistemati.