Ruby Sugar

Hoy he encontrado algunas perlas de Ruby, azúcar, o Ruby sugar, como más os guste. Por ejemplo:

RUBY:
  1. [*something]

es equivalente a

RUBY:
  1. Array(something)

O:

RUBY:
  1. users.map(&:name).sort

es equivalente a

RUBY:
  1. users.map { |u| u.name }.sort

Y la verdad, me he quedado con ganas de descubrir más.

Pienso que snippets como estos ayudan tanto a generar código limpio como a conocer a fondo el lenguaje en sí. Así que si alguien conoce más, ya sabe donde estan los comentarios.

Las fuentes: Ruby Sweetness y Symbol to Proc shorthand


5 Comentarios en “Ruby Sugar”  

  1. Gravatar Icon 1 Epaminondas Pantulis

    ¿Es realmente [*something] más legible que Array(something)?

  2. Gravatar Icon 2 Luis

    En mi opinión, el efecto es justo el contrario.

    Si con un lenguaje existen sentencias sinonimas, al leer un codigo nos podemos encontrar con cualquiera de ellas, en conseqüencia debemos conocerlas todas para poder leer el codigo escrito por alguien, a no ser que exista algun tipo de convención sobre que sentencias utilizar en cada caso.

    Así, Ruby, no es un lenguaje apropiado para proyectos donde intervengan más de un desarrollador ni para aquellos que se quieran distribuir bajo licencias libres.

    En canvio, como punto positivo, aprender Ruby (si se conoce otro lenguaje) es bastante más sencillo que aprender un lenguaje que carezca de sinonimos pues seguramente tendra sentencias similares a las del lenguaje que se conoce.

  3. Gravatar Icon 3 Fernando

    Epaminondas Pantulis: no, no lo es. Sin embargo no está mal conocer estos “atajos” del lenguaje para crear un código más compacto.

    Por otro lado tampoco creo que haya que pensar siempre en quién va a leer tu código: está bien poner comentarios y demás, pero no readaptarse a la forma de programar de los demás sólo para que puedan leer algo que tú escribiste tiempo atrás.

    Lo que sí es legible es:

    # Creamos un array con something
    [*something]

    Luis: lo que tú dices puede que tenga parte de razón, pero no veo yo tanta variabilidad en el lenguaje como para hacerlo inapropiado para grandes grupos de personas. Mira, por ejemplo rubyforge, o el mismo código fuente de Rails, que mucha gente lo lee y lo comprende.

  4. Gravatar Icon 4 Sebastian

    La primera impresion es que la legibilidad se reduce al emplear construcciones alternativas. Sin embargo, estas construcciones suelen ser mas simples y expresivas, y solo resultan confusas la primera vez que las encuentas.

    Al leer el codigo de otra persona, y encontrarse con un map(&:upcase) puedes deducir de que se trata por el contexto, o buscarlo en la documentacion, pero eso solo te ocurrirá una vez. De ese momento en adelante tu capacidad para leer ruby ha mejorado y ya no es un problema.

    Y no es por ponerme detallista, pero la construccion &:simbolo no es parte de Ruby. Rails la define (al igual que muchos otros detalles como .blank?) en core_ext de ActiveSupport. De hecho, ese “truco” en particular viene de Facets (buscala en rubyforge), una libreria repleta de detalles como ese.

  5. Gravatar Icon 5 CISPISSUERT

    Hi nice site
    Test Link

Deja tu Comentario



Sobre este blog

Blog personal de Fernando Blat, sobre tecnologías web, y programación, ¿o era al revés?

Technorati

Mi del.icio.us