CoffeeScript quem?

Muito buzz se formou depois que o DHH tornou público que a versão 3.1 do Rails virá com CofeeScript por padrão.

Aproveitando a barulheira, que é comum a cada vez que o criador da plataforma abre a boca, vamos nos ater ao que é importante e apresentar uma introdução ao resumo simplificado do CoffeeScript básico.

Confesso que minha opinião sobre essa ferramenta mudou nos primeiros instantes em que comecei a usar. No site do CoffeeScript (ok se eu começar a chamar de CS daqui para frente?) existe um link onde você digita o código do lado esquerdo e, imediatamente, do lado direito aparece o equivalente em JavaScript.

Fiz uma brincadeira lá usando um código que sempre me vem à cabeça ao tentar explicar o básico de programação funcional para alguem. Segue:

mimimi = (operation, value) ->
   operation(value);

dobro = (value) ->
  value + value;

quadrado = (value) ->
  value * value;

zero = (value) ->
  value - value;

um = (value) ->
  value / value;

alert(mimimi(dobro, 3));
alert(mimimi(quadrado, 3));
alert(mimimi(zero, 3));
alert(mimimi(um, 3));

Nada de outro mundo, certo? O equivalente JS é o código abaixo:

var dobro, mimimi, quadrado, um, zero;
mimimi = function(operation, value) {
  return operation(value);
};
dobro = function(value) {
  return value + value;
};
quadrado = function(value) {
  return value * value;
};
zero = function(value) {
  return value - value;
};
um = function(value) {
  return value / value;
};
alert(mimimi(dobro, 3));
alert(mimimi(quadrado, 3));
alert(mimimi(zero, 3));
alert(mimimi(um, 3));

CS permite também a checagem automática de valores e parâmetros opcionais, conforme o exemplo retirado do site:

fill = (container, liquid = "coffee") ->
  "Filling the #{container} with #{liquid}..."

Ou o equivalente em JS:

var fill;
fill = function(container, liquid) {
  if (liquid == null) {
    liquid = "coffee";
  }
  return "Filling the " + container + " with " + liquid + "...";
};

Sem dúvida, muito mais legível e expressivo.

É uma ferramenta que eu pretendo usar em algum projeto pequeno, para testar e ver o quanto acelera meu trabalho. Em projetos maiores talvez eu demore um pouco mais para usar mas, considerando que umas das minhas aplicações já conta com 79% de código total escrito em JavaScript, segundo o GitHub, imagino que isso vai melhorar consideravelmente a manutenção do código.

E no mais, se o CS não te chamou a atenção e você não quer mesmo utilizar, basta remover o require do arquivo Gemfiles e a vida segue como se nada tivesse acontecido.

Links recomendados:

If you enjoyed this post, please consider leaving a comment or subscribing to the RSS feed to have future articles delivered to your feed reader.

Sobre Plínio Balduino

Desenvolvedor de softwares há mais de 15 anos, tenta um pouco de tudo o tempo todo e dificilmente termina alguma coisa, apesar de achar que está melhorando nesse ponto. Torce para o Santo André, toca baixo e ainda é um daqueles que acredita em caráter, esforço e trabalho duro. Pela junção de tudo isso, não tem dinheiro, mulheres ou fama. É o autor do livro Dominando JavaScript com jQuery, publicado pela editora Casa do Código.
Esta entrada foi publicada em novidades da semana, quick tips, rails, ruby, web e marcada com a tag , , , , . Adicione o link permanente aos seus favoritos.

4 respostas a CoffeeScript quem?

  1. Roger Leite disse:

    Aê Plínio! O flame está correndo solto … pra quem gosta de acompanhar segue o link: https://github.com/rails/rails/commit/9f09aeb8273177fc2d09ebdafcc76ee8eb56fe33#comments

  2. Rodrigo disse:

    Eu nao acho que o exemplo ficou tao melhor assim nao. Uma camada de acucar pra ganhar isso parece um pouco demais…

  3. Alexsandro disse:

    Muito e tal.. gostei da sintax mas e ai?!!

    1 – CofeeScript se usa com Rubi ou o que?

    2 – Quais outras vantagens alem de um código limpo que ja é um bom ganho?

    Valew….

  4. @Rodrigo: É exatamente por isso que eu não uso SASS/Less. O overhead acaba sendo maior do que o ganho. De fato você ganha alguma coisa em legibilidade, mas em exemplos com jQuery a sintaxe continua praticamente a mesma.

    @Alexsandro: Você pode usar com Ruby/Rails através da gem coffee-script. Além do código teoricamente mais limpo, você ganha conhecimento numa ferramenta que talvez não vá usar.

    Como eu disse, ainda preciso utilizar num projeto onde eu sinta a diferença, como aconteceu com o HAML, para poder dizer com toda as letras “é ótimo, pode usar” ou “não vale a pena, é só buzz.”

Deixe uma resposta

O seu endereço de email não será publicado Campos obrigatórios são marcados *

*

Você pode usar estas tags e atributos de HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="" escaped="">