2012-02-06 5 views
7

Spero che questa domanda sia sull'argomento.Qual è il termine corretto per restituire qualcosa come parametro out?

stavo facendo la revisione del codice e siamo capitati la seguente funzione:

bool SomeFunc(std::string& o_xxx, char& o_yyy); 

Questa funzione viene utilizzata per recuperare i valori di xxx e yyy di una classe per mezzo di parametri fuori.

I commenti (che vengono poi utilizzati per auto-documentazione) dicono:

... questa funzione restituisce con riferimento al [xxx] e [yyy] ...

Ovviamente la funzione restituisce un valore booleano che indica il successo o il fallimento. Quindi la frase sopra deve essere riformulata. Ma come? Qual è il termine corretto (se esiste) per restituire qualcosa, per così dire, per mezzo di un parametro out o, in altre parole, per compilare un argomento passato per riferimento?

La domanda viene codificata in linguaggio agnostico, perché non è specifica per C++. Ma è anche etichettato C++ perché l'esempio è in C++.

+1

solito dire qualcosa per l'effetto di "la funzione restituisce un valore che indica successo o il fallimento in caso di successo' o_xxx' avranno la. il valore di [xxx] e 'o_yyy' avranno il valore di [yyy]. In caso di errore, gli argomenti sono invariati.". –

+1

I parametri di uscita vengono talvolta utilizzati perché è necessario restituire più di un parametro. Se li unisci in una classe, puoi solo restituire un'istanza. Qualche volta i parametri vengono usati per l'efficienza però. Infine, perché stai passando i dati? Incapsulare: dillo, non chiedere! –

+0

@ R.MartinhoFernandes: "In caso di errore, gli argomenti sono invariati" - e si noti che questa è una forte garanzia di eccezione.Quindi, se lo dici, assicurati di assegnare a 'o_xxx' nella funzione * prima di * assegnare a' o_yyy', poiché l'assegnazione della stringa è quella che può fallire. O usare gli swap. –

risposta

8

"In caso di successo, SomeFunc negozi in o_xxx e o_yyy i valori ..."; I negozi in sono come la pagina di manuale di Linux strtoul(3) descrive cosa questa funzione fa con il suo argomento endptr.

Anche se ho anche sentito la frase "return in" abbastanza spesso con parametri tipizzati di riferimento.

+0

Grazie! Ha senso, mi piace! –

1

In parole più semplici:

Funzione SomeFunc()puòmodificare parametri xxx(std::string) e yyy(char) e restituisce il successo o il fallimento (bool).

+0

Si noti che questo non è (in termini .NET) un parametro 'ref'. È un parametro 'out' –

1

Considerare il modo MSDN. Example.

Il valore di ritorno è descritto nella relativa sezione.
Le manipolazioni con i parametri di uscita sono descritte nelle rispettive sezioni e possono essere facoltativamente ripetute nella sezione Valore restituito.

1

Se si sta utilizzando doxygen, allora questo avrebbe fatto:

/** 
*- Description : This function ... 
* 
* @param[out] xxx ... 
* @param[out] yyy ... 
* 
* @return true for ..., false otherwise 
* 
***********************************************************************/ 
+2

'@param [out]' '@param [in]' –