2009-08-28 19 views
6

Es muy común en Ruby ver los métodos que reciben un hash de parámetros en lugar de simplemente pasar los parámetros al método.Hashes vs. Multiple Params?

Mi pregunta es: ¿cuándo se usan los parámetros para su método y cuándo se usa el parámetro hash?

¿Es correcto decir que es una buena práctica usar un parámetro hash cuando el método tiene más de uno o dos parámetros?

Respuesta

0

Un caso de uso obvio es que cuando se reemplaza un método en una clase secundaria, debe usar parámetros hash para los parámetros del método principal para cuando lo llame.

4

Utilizo hash de parámetros siempre que representen un conjunto de opciones que se unen semánticamente. Cualquier otro parámetro que sean argumentos directos (a menudo necesarios) para la función, los paso uno a uno.

+1

+1 - no se requiere nada en un hash de parámetros. Se podrían nombrar parámetros opcionales, con valores predeterminados, pero tiendo a pasarlos en un hash y establecer los valores predeterminados en el cuerpo del método si es necesario. –

1

Es posible que desee utilizar un hash cuando haya muchos parámetros opcionales, o cuando desee aceptar parámetros arbitrarios, como puede ver en los métodos de muchos rieles.

0

Por otro lado, y esto no sólo está relacionado con Rubí sino para todos los idiomas:

En las API que están en proceso de cambio, a veces es útil para declarar algunos o todos los parámetros de una función como objeto una sola parámetros (en Ruby, estos podrían ser hash, en C estructuras, etc.), para mantener la estabilidad de la API si el conjunto de argumentos aceptados cambia en futuras versiones. Sin embargo, la desventaja obvia es que la legibilidad se reduce drásticamente, y nunca usaría este "patrón" a menos que realmente tuviera que hacerlo.

1

si tiene más de 2 argumentos. Deberías empezar a pensar en usar hash. Esta es una buena práctica explicada claramente en el código de limpieza link text