¿Dejas paréntesis dentro o fuera en Ruby? [cerrado]


Respuestas:


95

De los elementos del estilo rubí

Ruby te permite dejar fuera paréntesis, en general, resiste esta tentación.

Los paréntesis hacen que el código sea más fácil de seguir. El estilo general de Ruby es usarlos, excepto en los siguientes casos:

  • Siempre deje los paréntesis vacíos
  • Los paréntesis se pueden dejar fuera de un solo comando que está rodeado por delimitadores ERb: los marcadores ERb aseguran que el código aún sea legible
  • Una línea que es un solo comando y un solo argumento simple se puede escribir sin paréntesis. Personalmente, encuentro que hago esto cada vez menos, pero sigue siendo perfectamente legible. Tiendo a no gustarme las líneas simples en el código ruby ​​regular que tienen múltiples argumentos y sin paréntesis.
  • Muchos lenguajes específicos de dominio basados ​​en Ruby (como Rake) no usan paréntesis para preservar una sensación de lenguaje más natural en sus declaraciones.

27

Uso parens como comentarios para ayudar al futuro yo ... que probablemente tenga menos células cerebrales que el yo actual :-)

Nada peor que mirar un código que escribiste hace 2 años y malinterpretarlo, de modo que rompas algo mientras lo modificas.

Si parens me salvará el futuro unos minutos (u horas) en el futuro, agregaré tantos como sea necesario para que la declaración sea muy clara.


2
+1 "Uso parens como comentarios para ayudar al futuro yo ... que probablemente tenga menos células cerebrales que el yo actual :-)" Eso es TAN cierto, y exactamente por qué lo hago. También es para ser misericordioso con cualquiera que me siga y tenga que usar mi código. En resumen, es una cuestión de mantenimiento.
The Tin Man

9

Los dejo fuera cuando estoy haciendo cosas similares a DSL, como t.column o has_many in rails. El resto del tiempo, generalmente se reduce a la claridad, y probablemente sea una división uniforme.


8

Supongo que hago ambas cosas, pero definitivamente las guardo si aumenta la legibilidad y evita declaraciones que parezcan ambiguas.


8

Si te refieres a las llamadas a funciones, siempre pongo paréntesis porque siempre es más fácil de leer. Si te refieres a condiciones (si, mientras) solo pongo paréntesis cuando son necesarios.


2
Estoy de acuerdo. En php, por ejemplo, puedo detectar rápidamente una var por el prefijo $ .. en javascript puedo reconocer una función por el paréntesis (). En Ruby, la diferencia entre var o func (sin paréntesis) no siempre es fácil de ver.

7

Intento dejarlos fuera, si es posible. Creo que hace que el código sea más fácil de leer (en términos generales).


4

El que sea más legible por lo general.

Pero siempre uso paréntesis cuando anido llamadas a funciones dentro de los parámetros de otros


2

Tiendo a omitirlos cuando hago afirmaciones como assert_equal. Tal vez sea para convertirlo en un lenguaje específico de dominio.


1

Si ha estado programando durante mucho tiempo, probablemente tenga "ganas" de agregar paréntesis y, en muchos casos, existen buenas razones para ello.

Sin embargo, en mi opinión, el código es más agradable a la vista y todavía no he tenido ningún problema: si va a necesitar paréntesis, lo sabrá de antemano antes de tener que ejecutar el script de depuración.


4
"Mi maestro me dice que es inevitable". Es y puede ser difícil de depurar. Recomiendo utilizarlos para evitar una asignación de parámetros ambigua.
The Tin Man

Votado en contra como "más agradable a la vista" es, en mi opinión, una pésima razón para dejar de lado los paréntesis alrededor de los argumentos de las funciones.
Marcello Romani

2
hablando con la multitud que no es de padres, encontré este problema el otro día if owner.is_a? thing //worked fine if owner.is_a? thing && x > 1 //not fine . Solo he estado aprendiendo ruby ​​durante un par de semanas y donde trabajo usa la menor cantidad de caracteres posible y si vienes de cualquier otro idioma, hay un aprendizaje curva para saber cuándo estás pasando un hash implícito, una matriz de símbolos, pasando a símbolos a una función ... no soy un fan.
Mega Man

@MegaManif owner.is_a? thing and x > 1
anna328p

1
@DmitryKudriavtsev andno tiene la misma precedencia de operadores que &&tiene
Mega Man
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.