2013-02-26 12 views
8

Durante la lettura del codice C, spesso venire attraverso affermazioni quali:Cosa significa `rc` per i valori restituiti dalla funzione?

int rc = foo (bar, baz);
assert (rc! = NULL);

dove la variabile rc viene utilizzato per controllare il valore di ritorno della funzione. Presumo che sia un mnemonico di qualche tipo ma non ne deduca il significato.

Mi piacerebbe sapere il suo significato per aiutare con la mia comprensione del codice.

+0

Io, io sono noioso e nomino la variabile "risultato" invece di guess-the-acronym. – Lundin

+3

Non è necessario comprendere la denominazione delle variabili per comprendere il codice. Devi capire che cosa la funzione 'foo()' è, fa e ritorna per capire questo codice. Non fidarti mai di quale sia la variabile di ritorno chiamata per spiegare cosa fa il codice ... – Mike

risposta

9

Penso che sia "codice di ritorno". Principalmente usato per fare riferimento ai codici di ritorno intero del modulo 0/NULL or 1.

3

Direi "codice risultato", ma è solo una supposizione, naturalmente.

+1

Codice risultato o codice di ritorno. – Joe

2

Spesso significa "codice di ritorno" o "codice risultato", anche se potrebbe sostanzialmente significare qualcosa a seconda di ciò che l'autore intendeva. Poiché le convenzioni di denominazione vanno, non è fantastico. Voglio dire, è meglio di myVariable, ma non di un intero lotto.

Mi associo all'idea che i nomi delle variabili dovrebbero essere significativi e rc non sono eccessivamente significativi. Se significa "codice risultato", la mia domanda è "risultato di cosa?" Cosa indica il codice di ritorno?

9

rc sta per "rutabaga casserole". Che cosa? Non la pensi così ?!

Beh, il fatto è che nessuno può dire cosa significhi realmente questo perché non ci sono nomi obbligatori nel codice C. Potrebbe significare "codice di ritorno" o "controllo remoto" o qualsiasi altra cosa l'autore avesse nella sua testa in quel momento.

Mi piacerebbe sapere il suo significato per aiutare con la mia comprensione del codice

Il tuo argomento è intrinsecamente imperfetto. Se vuoi capire meglio il codice, assicurati di leggere la documentazione e l'origine delle funzioni utilizzate, non fidarti mai del fatto che i nomi di funzioni o tipi di dati abbiano la precedenza su ciò che il codice sta effettivamente facendo.


Modifica per affrontare il commento:

In realtà, penso che il tuo argomento è viziato, Mike. È assurdo dire che conoscere i nomi delle variabili comunemente usati non ti aiuterà a capire il codice, nonostante il fatto che non siano obbligatori. Ad esempio, è noto che i viene comunemente usato (ma non obbligatorio) come variabile di incremento del ciclo in tutte le lingue.

È un argomento equo dire che ci sono effettivamente nomi variabili che le persone tendono a seguire. Vedremo ret o rc per un valore di ritorno o di un codice di ritorno, spesso vedremo singole variabili a, b, c, ..., i, j, k, utilizzato per looping operatori.Tuttavia, fare un'ipotesi su ciò che una variabile si basa su un nome è una pessima idea.
Non solo la tua ipotesi su ciò che la variabile sta per essere sbagliata (per esempio un semplice i nella funzione di legge di Ohm potrebbe essere il nome scelto per rappresentare la corrente, niente a che fare con il loop) ma anche ciò che ha senso per te non essere ciò che aveva senso per l'autore.

esempio, l'autore ha una variabile int return_code. Si potrebbe presumere che verrà inserito il codice di ritorno della funzione, ma potrebbe essere utilizzato per controllare il valore restituito di una funzione denominata entro la funzione che si sta valutando e la variabile int r viene invece utilizzata per il codice di ritorno.
Supponiamo che si veda la variabile count che sta per essere un iteratore di loop o un conteggio di un numero di file o è un semaforo di conteggio?

Quindi, Chris Redford, devo rispettosamente non essere d'accordo. Non è assurdo dire che conoscere i nomi di variabili comunemente usati non aiuta a capire il codice, perché non farà di meglio che leggere il codice stesso, e lo potrebbe portare a un percorso di allontanamento pensando di sapere cosa sta succedendo quando davvero non lo fai.
Se si capisce il codice sorgente vedrete return xxx; o for(int yyy=0; e non dovrete fare ipotesi su ciò che le variabili stanno facendo, saprete per certo, e questo è l'unico modo da garantire lo sai cosa sta succedendo.

+0

Ottimo punto! – favoretti

+0

Punto preso. Solo che l'ho visto in codice da diversi autori quindi ho pensato che fosse una specie di convenzione. Inoltre, so che è una buona pratica usare nomi di variabili significativi per rendere il codice più comprensibile. Quindi non penso che _my_ argomento sia difettoso. – krm

+1

In realtà, penso che il tuo argomento sia difettoso, Mike. È assurdo dire che conoscere i nomi delle variabili comunemente usati non ti aiuterà a capire il codice, nonostante il fatto che non siano obbligatori. Ad esempio, è noto che 'i' è comunemente usato (ma non obbligatorio) come variabile di incremento del ciclo in tutte le lingue. Dopo aver appreso l'uso di 'i' in una lingua o applicazione, puoi facilmente riconoscerne l'uso in un'altra lingua o applicazione e comprendere più rapidamente il codice. –

Problemi correlati