2008-10-16 13 views
6

Un colega y yo estamos discutiendo las mejores prácticas con respecto a los parámetros del método de pedido. El objetivo es establecer un estándar en nuestra organización para mejorar la legibilidad y la productividad dando a nuestros métodos firmas comunes. Simplemente estamos estableciendo pautas para los graduados recientes que estamos contratando.¿Qué convenciones existen para ordenar argumentos en métodos?

Ejemplo (userId siempre se pasa en la auditoría de las llamadas):

GetOrders (userId string, int customerId); GetOrders (string userId, int [] orderIds); GetCustomer (string userId, int customerId);

Mi argumento es el siguiente:

  1. argumentos comunes están más a la izquierda.
  2. restantes argumentos se basan en la importancia
  3. argumentos opcionales (nulable) último.

Su argumento es esencialmente el opuesto.

No estoy pidiendo una respuesta correcta o incorrecta aquí, ni una discusión. Solo quiero ver qué estándares existen ya.

Gracias!

Respuesta

6

Me gustaría ir con el pedido de entrada, salida, opcional.

Opcional debería irme al final porque la mayoría de los idiomas le permiten especificar un valor predeterminado para los argumentos opcionales para evitar tener que incluirlos. La disposición de eso es que tienen que ser el último argumento (s); de lo contrario, no puede soltarlos.

Sin embargo, eso supone que no se pueden tener argumentos con nombre. Si puedes tenerlos, siempre sugiero usarlos para mayor claridad y el orden se convierte en un punto discutible.

3

Me gusta organizarlos en orden alfabético, por nombre. Facilita localizar el que buscas.

Acepto que los opcionales con valores predeterminados parecen pertenecer al final. En algunos idiomas, esto es obligatorio.

Cuando tienes métodos sobrecargados, empiezo con el argumento más comúnmente usado, y termino con uno (s) que hacen que esta versión del método sea única.

public method foo (string name) 
public method foo (string name, string city) 
public method foo (string name, string city, string state) 
+0

+1 para la recomendación de métodos sobrecargados.No estoy de acuerdo con el orden alfabético. – OregonGhost

+0

Sí, no tengo muchas ganas de alfabetizar. ¿Cuál es tu preferencia? – DOK

4

Intento que todos los métodos que usan parámetros similares los usen en el mismo orden.

Para la elección de un método único, voy por importancia. Los artículos opcionales duran.

1

Una expresión popular en la programación en C, es que el objetivo va primero, por lo que en strcpy (A, B); está copiando B a A (muy parecido a "A = B;" está copiando B a A).

+0

bcopy usa el opuesto: void bcopy (const void * s1, void * s2, size_t n); – philant

1

Ordene que las cosas también aparezcan en otros contextos.

Es más fácil agregar argumentos hasta el final.

Cuestiones relacionadas