2010-05-09 16 views
7

Al escribir las funciones, mi cerebro siempre gasta unos pocos milisegundos para verificar qué orden de parámetros sería el mejor para una función determinada.Convenciones para el orden de los parámetros en una función

debo escribir:

public Comment AddComment(long userID, string title, string text) 

o probablemente:

public Comment AddComment(string title, string text, long userID) 

Por qué no:

public Comment AddComment(string title, long userID, string text) 

¿Sigue las reglas al ordenar los parámetros de sus funciones? ¿Qué parámetro colocaría primero y cuál seguiría?

+1

Buena pregunta, pero por la forma en que la está redactando, suena como una discusión abierta ... ¿de verdad (o preferiría estar preguntándome) si existe una convención establecida para el orden de parámetros? De ser así, ¿qué idioma/entorno? Al igual que las mayúsculas, este tipo de cosas seguramente será diferente entre los idiomas. –

Respuesta

3

sólo hay 3 reglas que se aplican generalmente:

  • Si un lenguaje permite pasar un hash/mapa/matriz asociativa como un solo parámetro, trate de optar por pasar eso. Esto es especialmente útil para métodos con> = 3 parámetros, ESPECIALMENTE cuando esos mismos parámetros se pasarán a llamadas de función anidadas.

    Esto permite un mantenimiento más fácil: agregar otro parámetro (especialmente cuando la misma lista de parámetros se pasa entre llamadas de función anidadas de 10 niveles) implica cambiar 1 lugar en el código (la última llamada) en lugar de CADA función que toma esa lista y la pasa a otra parte.

    Esto tiene un pequeño inconveniente de no verificación de tipos en idiomas como C++ (por ejemplo, su compilador no puede verificar si el hash/map contiene los tipos correctos de valores para los tipos esperados de claves) - si eso es una preocupación, puede encapsular ese mapa de parámetros como una estructura/clase en su lugar.

  • Si un idioma permite valores predeterminados para parámetros (como C++, procedimientos almacenados de Sybase), obviamente deja los parámetros opcionales para ser el último, y es menos probable que el parámetro se especifique con un valor, el último en la lista debería ir.

  • De lo contrario, pídalos en cualquier agrupación lógica que sea más legible/mantenible.

    Esto puede ser un poco subjetivo, p. siguiente/anterior peso/altura se puede pedir next_weight,next_height, prev_weight, prev_height o next_weight, prev_weight, next_height, prev_height igualmente válido. De nuevo, las 3 consideraciones principales son la legibilidad/logicaleness para usted y la facilidad de mantenimiento.

    En cuanto a la legibilidad, puede ordenarlos por tipo o por sentido.

    En cuanto a la "lógica", puede ordenarlos por su significado (por ejemplo, agrupar todos los "siguientes", o todas las alturas), O por algún orden impuesto en otro lugar; por ejemplo, orden de columnas en la tabla correspondiente de la base de datos. o el orden de campo en una GUI (peor, ya que es probable que cambie).

    En cuanto al mantenimiento, si no se cristaliza un orden significativo evidente, el orden alfanumérico es el mejor ya que permite una manera MUY fácil de encontrar un parámetro escaneando y especialmente para decidir dónde insertar un nuevo parámetro.

1

Personalmente, yo haría la primera porque ese es exactamente el orden que tendría en la GUI: usuario, título, texto.

Pero como dijo David, esto es muy abierto. Si mis estándares de proyecto requirieran un orden especial, lo usaría.

Cuestiones relacionadas