Siedrix

RSS Twitter

Por que no me gusta CoffeeScript

Ayer @chillicoder y @mauropm tenian unos cuantos twetts sobre que CoffeeScript es bastante chido, y tiene unas cosas bastante agradables como:

alert "I knew it!" if elvis?

Lo cual ejecuta la funcion alert si y solo si elvis existe. Es una sintaxis agradable y por lo cual en algun punto me intereso aprenderlo a usar.

Hay casos como agregar un callback al evento click en jQuery no cambia mucho la sintaxis. En CoffeeScript es:

$('.account').click(()->alert('account was click'));
$('.account').click(function() {
  alert('account was click');
});

Sin embargo en la mayoría de los casos, lo que escribo es javascript asíncrono y en la mayoría de los casos uso funciones, para ser mas exacto, funciones como la siguiente:

asyncSomething = function(x, callback) {
  x = x * getSomeAsyncvalue();
  return callback(x);
};

y despues la ejecutamos en algun otro lado de la aplicacion de esta manera:

asyncSomething(5, function(data) {
  return console.log(data);
});

Son patrones normales de javascript, sobretodo cuando hacemos cosas que implican animaciones de eventos, emisores de eventos y ajax.
En CoffeeScript se veria de la siguiente manera:

asyncSomething = (x, callback) -> x = x*getSomeAsyncvalue(); callback x;

y en otro lado de mi aplicación la ejecutaremos de esta manera.

asyncSomething(5,(data) -> console.log(data));

El (data) -> console.log(data) al llamar mi funcion es algo que no me agrada, mas alla llamar un parametro despues de hacer esto es imposible. Entonces el siguiente ejemplo:

setTimeout(function(){
   DoSomething()
},1000);

En CoffeeScript se veria como:

setTimeout(()->DoSomething(),1000)

Lo cual primero que nada causa un error de parser y después el declarar ()-> en lugar de function(){} me causa un poco de dolor de cabeza, principalmente si agregas mas de una linea de código. Simplemente me agradan mis parentesis, mis llaves({) y me agrada la sintaxis de javascript.

Para empezar a checar CoffeeScript tienen muchos ejemplos en su pagina, donde todos los ejemplos tiene una opción de load donde pueden empezar a escribir su código y decidir si les gusta o no.

En mi caso, creo que hay algunos casos que la sintaxis es muy bonita, en algunos casos que la sintaxis no aporta mucho a lo que se hace en javascript y ,en muchos casos, solo complica la sintaxis. Espero sus opiniones de coffescript.

Related posts:

  1. getJson y un par de aplicaciones
  2. Agregando historia a javascript
  3. Probando en javascript, primeros pasos
  4. Ajaxisando una Aplicacion Web
  5. Sammy.js

6 Comments to Por que no me gusta CoffeeScript

  1. March 14, 2011 at 12:58 pm | Permalink

    Lo estás haciendo mal :P , no hay ninguna razón para que tengas las funciones en una sola línea, y de hecho, la belleza de coffeescript se aprecia cuando precisamente usas varias lineas.

    asyncSomething = (x, callback) ->;
      x = x * getSomeAsyncvalue()
      callback x
     
    asyncSomething 5, (data)->;
      console.log data
     
    setTimeout ->;
       DoSomething()
    ,1000

    Nota que a) los parentesis en la definición de una función son opcionales, b) puedes obviar el return statement, porque las expresiones en coffeescript siempre regresan el último valor. c) Como en python, la identación es parte de la sintaxis.

  2. March 14, 2011 at 1:05 pm | Permalink

    Rayos, wordpress escapó mis >

    Otra cosa que amo de coffeescript es la manera en que simplifica las condicionales, supón que quieres comprobar que el segundo argumento en asyncSomething es efectivamente una función antes de ejecutarla.

    callback x if typeof callback is "function"

    a poco no es super legible?

  3. Zarkiel's Gravatar Zarkiel
    November 13, 2011 at 2:27 pm | Permalink

    En parte estoy de acuerdo contigo, ya que a mi también me gustan los paréntesis, y las llaves para indicar inicio y fin de una función.

  4. Jorge Ricaldi's Gravatar Jorge Ricaldi
    April 28, 2013 at 11:46 pm | Permalink

    Pues he estado aprendiendo coffescript y la verdad no me tinka en nada, siento que estoy gastando parte de mi cerebro en aprender algo que se puede hacer sin necesidad de tanto minimalismo, hablo de la misma sintaxis javascript. Stylus por su parte en CSS si parece una gran herramienta y Jade como engine template para Node tambien es super amigable. Bueno en gusto y sabores nadie manda, o no?

Deja tu Opinión

Puedes agregar tags de HTML como: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="" escaped="" highlight="">