2010-02-10 25 views
8

Al mirar el código de otras personas, parece muy común incluir un espacio extra dentro de los bloques de riostra. ¿Hay alguna razón para eso? Para mí, parece agregar pulsaciones de teclas adicionales para agregar fealdad. Sobre todo cuando las cosas se anidan:Ruby whitespace: ¿Es {: a => 1} mejor que {: a => 1}?

lambda { (1..5).map { |i| { :a => { :b => i } } } } 

Por alguna razón que sólo se ve más concisa y coherente que hacer:

lambda {(1..5).map {|i| {:a => {:b => i}}}} 

Tal vez los espacios adicionales son algunos efectos secundarios editor de texto o hay una razón histórica o ¿alguna cosa? No he visto esto abordado en las guías de estilo y si es como una sangría de espacio 2 quiero seguir las convenciones, pero si no hay una buena razón, supongo que seguiré haciendo las cosas a mi manera. ¿Cuál prefieres y por qué?

+3

es posible que desee hacer de esta comunidad wiki, ya que es muy subjetiva. –

+0

Las llaves pueden significar bloques y hash. –

+0

Creo que esperaba que esto no fuera tan subjetivo, que hubiera una respuesta correcta y clara respaldada por un razonamiento válido. – eremite

Respuesta

5

La mayor parte del código Ruby veo (y esperemos que todo el código que escribo) utiliza este estilo:

{ :key => 'value' } 

Esto es lo que me he acostumbrado a e internalizado.

Cuando todo está dicho y hecho, este problema de un estilo en particular no es de suma importancia. Dicho esto, la comunidad de Ruby (como lo hacen otros) cree que es importante hacer coincidir su estilo (a) con el proyecto con el que está trabajando y (b) con la comunidad de código en general. Es por eso que recomiendo usar los espacios en blanco adicionales.

Por cierto, esta es una buena guía de estilo Ruby: http://www.caliban.org/ruby/rubyguide.shtml#style

+0

Así que tomé su consejo y ejecuté algunas expresiones regulares simples en los proyectos ruby ​​observados en github. Y resulta que los bloques casi siempre incluyen los espacios adicionales, mientras que los hashes generalmente lo hacen, pero no siempre. Algunos de los enfoques de combinación a continuación fueron interesantes, pero no parecen favorecerse demasiado ni ser inmediatamente obvios, así que he decidido someterme a la voluntad de la mayoría y cambiar mi estilo para usar los espacios extra (y anticipar los hashes de ruby ​​1.9 que no los necesito, como señala Mereghost). – eremite

0

No soy un programador de Ruby, pero tiendo a poner más espacio después de corchetes/paréntesis, si tengo algo más largo entre ellos, es decir, una sentencia más larga si o un cálculo adicional como argumento para una función.

Así que yo diría que, aunque no soy el programador de Ruby, haga lo que desee/como su empleador (si no es un profesional independiente/aficionado).

3

Parece una cuestión de estilo. Creo que son feos, dejen los espacios extra.

Edit: Estoy de acuerdo con el comentario a continuación que simplemente diciendo que es una cuestión de estilo no da una licencia para hacer lo que quieras. Si alguien más va a tener que leer o mantener el código, adherirse a un estilo común es una buena práctica de codificación. Así que sería la primera persona en poner espacios si alguien me convenciera de que la mayoría del código de Ruby usa espacios de esta manera. Personalmente, todavía creo que es feo, pero eso es mucho menos importante que permitir que otros puedan leer mi código.

+3

Muchas cosas son una cuestión de estilo - pero la preferencia de un individuo en el estilo no es el único (o incluso primaria) Factor de aquí. La pregunta clave es cómo usar un estilo que encaje con la comunidad de Ruby. Hacerlo hará que su código sea más fácil de leer y le dará más respeto en la comunidad. –

+1

Ser contrario aquí: ¿más fácil de leer para quién? Por supuesto, si el código está diseñado para ser leído por la comunidad Ruby, seguro - pero si la persona que tiene que tener sentido de que la mayor parte es usted, usted debe publicar su código en la forma que lo hace más fácil para que lo lea. (Dicho esto, no estoy abogando por un estilo de codificación tremendamente divergente; lo mejor es intentar hacer un esfuerzo por conformarse un poco, ya que encontrará que vale la pena cuando necesite leer el código de otros ...) – Shadowfirebird

1

El ejemplo que muestran es una cuestión de estilo. Creo que quitas los espacios si vas a poner todo en una línea. Sin embargo, si se pone

[1,2,3].slice (2) 

en su código, Ruby le da una advertencia

ADVERTENCIA: No ponga el espacio antes argumento entre paréntesis

tanto, creo que Ruby es apasionado por el paréntesis, pero no los apoyos.

+2

Estás comparando manzanas y naranjas. Los espacios que se refieren a @eremite son aquellos * dentro de * rizados, no los que están en el exterior. Usted está hablando de espacios principales (y tal vez posteriores). Un ejemplo análogo suyo sería '[1,2,3] .slice (2)' – Zano

+0

Por lo tanto, la palabra "sin embargo" – dbrown0708

3

Puede usar una combinación.En un lugar donde solía trabajar, teníamos una regla de estilo algo confusa que decía "use espacios entre paréntesis, excepto cuando son los corchetes exteriores de una estructura". Esto suena confuso, pero a menudo te ayuda a llegar a algo que tenga un buen sentido visual intuitivo.

lambda {(1..5).map {|i| {:a => { :b => i }} }} 

me gusta cómo esta separación pone en marcha el resumen interna (valor de retorno), sin que se sienta demasiado smushed y el }} arrastrando ayuda a ver que está encerrado por dos niveles de anidamiento.

0

Hasta cierto punto, creo que es una cuestión de gusto personal. Normalmente encuentro que agregar espacios en blanco ayuda a la legibilidad, pero no siempre. En su ejemplo, en lo personal, lo haría:

lambda{ (1..5).map{ |i| {:a=>{:b=>i}} } } 

Por supuesto, si le resulta problemático para leer, que casi siempre tienen la opción de no usar un lambda, si lo prefiere.

Si está de codificación con un grupo de otras personas - o con el propósito específico de mostrar su código a la comunidad Ruby - también hay que tener en cuenta lo que encontrarán legible.

Pero no estoy seguro de que me importa en gran medida que el ejemplo anterior es "espaciamiento de rubí normal".

0

El espacio extra en el inicio/extremos de los hashes fue probablemente hizo un buen estilo para facilitar la lectura de los valores clave/que comienzan/extremo con nada más que una carta.

{:a => "b"} #is less readable than 
{ :a => "b" } #more readable. 

Es en parte atribuido a las llaves, que rara vez se ven espacios al comienzo de hashes en Ruby ([]).
La nueva sintaxis de hash introducido en Ruby 1.9 será probablemente modificar esta

{a: "b"} #same as {:a => "b"} 
0

Siempre he pensado que era más legible para incluir el espacio adicional dentro de bloques de apoyo rizado, pero omitir el último espacio si el carácter anterior es un corsé de cierre. Para utilizar el ejemplo:

lambda { (1..5).map { |i| { :a => { :b => i }}}} 
+1

Completamente subjetiva, pero la asimetría me molesta. –

0

en mi humilde opinión, en la mayoría de los casos se comportan espacios ruido como sintáctico y son molestos a escribir ... Me resulta sorprendente la última obsesión de la comunidad rubí con ellos, con los pocos que la atención sobre ellos tratan de imponer como la norma después de 10 años sin dicha norma en todos ....

Cuestiones relacionadas