26 de nov. de 2011

Scala Tour - Part 1

Dae gurizada..

Nos últimos meses tenho acompanhado algumas coisas sobre Scala, e minha idéia é criar alguns posts explicando alguns tests.

Vou usar como referência este post do Martin Odersky, pai do Scala, onde ele separa alguns "níveis" de conhecimento. (Não vou entrar no mérito se estes níveis estão certos ou não, só vou usar como referência. E quando digo referência é porque não vou seguir extatamente o que está alí.)

Seguindo a idéia do Uncle Bob Martin, vou usar TDD para estudar a linguagem. Então, cada recurso da linaguem vai ser representado com um ou vários testes unitários.


Ambiente de Desenvolvimento

Eu fiz testes rápidos usando o Scala IDE no Eclipse e Eclipse + Maven. Não gostei de nehum deles. Eu encontrei alguns problemas mas não dispensei muito tempo tentando arrumar. Então, não use como base meus problemas para dizer se funciona ou não. Abaixo alguma explicação:


Eclise + Scala IDE + Maven
Foi minha primeira tentativa. O Scala IDE não funcionou legal com o maven plugin. Não reconheceu as classes Scala e ficou marcando as classes como erro de compialção. 

O plugin Scala para o maven funcionou sem problemas. Mas o suporte da IDE não é bom.

Scala IDE "puro"
Legal, mas achei o suporte pra testes meio pobre. Eu vi que pra fazer isso funcionar tem q fazer uma gamba usando jUnit. Não dei muita atenção e abandonei.


Então parti para o SBT - Simple Build Tool

Depois de reclamar um pouco no twitter o Diego Pacheco me deu a dica do sbt. e então comecei a gostar.

As instalação do SBT é simples e você encontra instruções aqui: Sbt Wiki - Setup Guide
Pra quem usa Mac recomendo usar o brew pra fazer essas instalações.

Estou usando a versão 0.10 do sbt e ela teve algumas mudanças nesta versão que causaram um pouco de confusão. 

Nas versões anteriores o SBT criava a esturuta básica do projeto, que é semelhante a do maven. Mas nessa versão eles removeram esse comportament. Da uma olhada nesse post de Jul/11. Você tem que criar na mão ou usar outra ferramenta, como o giter8.

Giter8

Aproveitando, já usei o Giter8 que também é bem barbada. Ele é funciona basicamente como o "arch types" do maven. 


Eu não lembro mais qual o template que eu usei, mas você pode copiar do meu repositório.

Aprendendo Scala com TDD

Lendo o livro Clean Code do Uncle Bob ele menciona sobre aprender um framework usando TDD. A idéia é interessante e decidi fazer um teste no aprendizado de Scala.

Scala tem dois princpais test frameworks Scala Test e Scala Specs. Primeiramente eu escolhi o Scala Test porque ele foi a primeira opção que aparece no Google. (obviamente, pois eu busquei por "scala test").

Depois dando uma lida nesse post me pareceu que o Scala Test é mais flexível enquando o Scala Spects é mais tendensioso no uso de BDD. Não tenho nenhuma opnião formada ainda e também não estou interessado nisso agora. 

A instalação dele com sbt é simples, só a dicionar a dependência no "build.sbt"

libraryDependencies ++= Seq(
  "org.scalatest" %% "scalatest" % "1.6.1" % "test"
)

O legal é que você pode usar  "Continuos Build" e deixar o compilador roando em background. Enquanto você escreve/modifica o código ele vai compilando e executando os testes.

Dentro do projeto, rode "sbt" e depois "~ test". Mais informações aqui




Agora com o ambiente pronto vai começar a brincadeira.

Era isso...

Abraço,
Simundi


Nenhum comentário: