2012-02-06 8 views
7

Espero que esta pregunta sea sobre el tema.¿Cuál es el término correcto para devolver algo como un parámetro de salida?

que estaba haciendo revisión de código y topé con la siguiente función:

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

Esta función se utiliza para recuperar los valores de xxx y yyy de alguna clase por medio de parámetros out.

Los comentarios (que luego se utilizan para auto-documentación) dicen:

... devuelto por esta función por referencia la [xxx] y [yyy] ...

Obviamente la función devuelve un valor booleano que indica éxito o falla. Entonces, la frase anterior necesita ser reformulada. ¿Pero cómo? ¿Cuál es el término correcto (si existe) para devolver algo, por así decirlo, mediante un parámetro de salida, o, en otras palabras, rellenar un argumento pasado por referencia?

La pregunta está etiquetada como agnóstica del lenguaje, porque no es específica de C++. Pero también está etiquetado como C++ porque el ejemplo está en C++.

+1

suelo decir algo en el sentido de "la función devuelve un valor que indica el éxito o el fracaso en caso de éxito' o_xxx' tendrán la. el valor de [xxx] y 'o_yyy' tendrá el valor de [aaa]. En caso de falla, los argumentos no se modificarán.". –

+1

A veces se usan parámetros de salida porque hay más de un parámetro para devolver. Si los combina en una clase, puede devolver una instancia. Algunas veces, los parámetros de salida se usan para la eficiencia. Finalmente, ¿por qué estás transmitiendo datos? Encapsular: ¡decir, no preguntar! –

+0

@ R.MartinhoFernandes: "En caso de falla, los argumentos no se modifican", y tenga en cuenta que esta es una fuerte garantía de excepción.Entonces, si dice esto, asegúrese de asignar 'o_xxx' en la función * antes * de asignar a' o_yyy', ya que la asignación de cadenas es la que puede fallar. O usa swaps. –

Respuesta

8

"Tras el éxito, SomeFunc tiendas en o_xxx y o_yyy los valores ..."; tiendas en es cómo la página de manual de Linux strtoul(3) describe lo que hace esa función con su argumento endptr.

Aunque también he escuchado la frase "volver a entrar" a menudo con parámetros de tipo de referencia.

+0

¡Gracias! Tiene sentido, me gusta! –

1

En palabras más simples:

Función SomeFunc() puede modificar parámetros xxx(std::string) y yyy(char) y devuelve éxito o el fracaso (bool).

+0

Tenga en cuenta que esto no es (en términos de .NET) un parámetro 'ref'. Es un parámetro 'out' –

1

Considere el modo MSDN. Example.

El valor de retorno se describe en su propia sección.
Las manipulaciones con parámetros de salida se describen en sus propias secciones y pueden repetirse opcionalmente en la sección Valor devuelto.

1

Si está utilizando doxygen, entonces esto haría:

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

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

Cuestiones relacionadas