Quando usar Exceções

Posted by caike on May 14, 2013

Um post interessante na lista GURU-PA:

(…) quando estamos desenvolvendo um projeto é geralmente uma boa estratégia desenvolver Exceções próprias, para tratar especificamente do problema em questão.
Queria saber se vcs têm algum padrão de implementação, como vcs trabalham com esta questão?
Segue minha resposta ao grupo:

Legal a dúvida!

Eu costumo escrever exceções quando sinto a necessidade de criar abstrações pra possíveis erros em um fluxo que normalmente não deve gerar erro. Por exemplo, se a sua aplicação depende de um arquivo de configuração, você pode lançar uma exceção específica caso o arquivo não exista. A alternativa seria retornar false, mas um simples boleano não diz muita coisa com relação ao erro em questão. Em linguagens não OO, tipo C, a alternativa é retornar error codes, o que enche o código de if/else e torna a manutenção um pesadelo.
No exemplo que o Felipe mencionou de Model.find(id), o AR lança um erro porque esse método é usado pra procurar por um record específico no banco, que necessariamente deve existir. Normalmente a gente usa Model.find(id) em actions oriundas de urls que foram geradas dinamicamente, resultados de uma query no banco. Por exemplo, uma listagem de produtos em /products, lista os products a partir de um Product.all  (SELECT * FROM products) e gera dinamicamente links para uma action que então chama Model.find(id).Nesse caso, o id do Model.find(id) está vindo de uma url, por exemplo  /products/1, que foi gerada por ids vindos originalmente do banco. Não foi o usuário que pensou “Ah.. deixa eu ver se existe esse id”. Pra casos como esse, onde pode ou não existir um record no banco, você usa Model.find_by_id(id), ou o novo Model.find_by(id: id) do Rails 4. Esses dois métodos “aceitam” o fato de não existir um resultado no banco, e simplesmente retornam nil caso não exista.
No geral, exceções são uma forma elegante em OO de falar que deu merda em algum lugar que não deveria ter dado merda, e oferecem ao client informações necessárias pra ele tratar o erro da forma como ele achar melhor.

TaSafoConf 2012 3

Posted by caike on July 19, 2012

Nos dias 8 e 9 de Junho a cidade de Belém do Pará teve o maior evento de tecnologia organizado pela sua comunidade local até então, o TaSafo Conf. Participar deste evento foi algo especial pra mim, pois morei muitos anos em Belém e tenho uma grande apreciação pela cidade e por sua comunidade de tecnologia.

Palestra de Interfaces

Foram dois dias de palestras sobre os assuntos mais variados, como linguagens de programação, metodologias, cloud e open-source. Eu apresentei uma palestra sobre “Modelagem Orientada a Interfaces”, que foi uma versão modificada da mesma palestra que apresentei na RailsConf deste ano.

http://speakerdeck.com/u/caike/p/powerful-interfaces

O Luiz Sanches fez um post bem mais completo sobre o evento, não deixe de conferir. O grupo TaSafo está de parabéns pela exelente organização e espero poder participar da próxima edição!

Magic Ruby 2011

Posted by caike on February 09, 2011

Last week was Magic Ruby here in Orlando. It was a two day, single track event, put together by Jeremy McAnally, where we had some amazing people coming from all over the country to attend and also to present there.

Magic Ruby

Gregg and I presented our talk on “Code isnt’ Enough”, where we talked about 12 principles that go beyond just writing good code and we think that every software developer should follow in order to become a better professional.

I’ve had lots of feedback from people, specially about running our local Coding Dojo (which will meet next week at the Voxeo office).

For a complete list of the talks and links for some of the slides, you can visit Tim Knight’s blog at Innovative Though.

Congrats to Jeremy and all of the sponsors for putting this great conference together.

Oxente Rails 2010

Posted by caike on September 30, 2010

No início do mês de agosto tive o prazer de visitar pela primeira vez a cidade de Natal, no Rio Grande do Norte, para a segunda edição do famoso Oxente Rails. Foi um evento maravilhoso, muito bem organizado pelo pessoal da Tink! e que possibilitou um networking sensacional entre comunidades de todo o Brasil.

oxente_geral

Foram dois dias de palestras sobre tecnologia, agilidade, empreendedorismo e, claro, hora-extra.

No primeiro dia apresentei minha palestra sobre Refactoring e tive um excelente feedback de pessoas que puderam identificar não apenas alguns dos “code smells” que foram mostrados, como também alguma situações mencionadas.

caike_palestra

No segundo dia, tivemos a chance de realizar um Coding Dojo na área de openspaces. Fiquei muito feliz quando, na volta do almoço, vi o pessoal se organizando e dando início ao grupo de Coding Dojo do Rio Grande do Norte!

caike_dojo

Montei este vídeo com algumas cenas do evento:

Mais uma vez, meus parabéns ao pessoal da Tink! e espero poder participar do Oxente Rails 2011!

ps:  Grande falha minha ter deixado este post em rascunho por tanto tempo!

Comunidades Dinamicamente Tipadas (slides) 5

Posted by caike on July 16, 2010

Nesta quarta-feira aconteceu mais uma reunião do grupo TaSafo, em Belém do Pará. Foi um prazer poder re-encontrar antigos amigos e conhecer pessoalmente os responsáveis por movimentar a comunidade Paraense de desenvolvimento.

O encontro foi composto por duas apresentações, seguidas da ‘Hora do Desapego’.

Meu amigo Mateus Linhares falou sobre sua experiência implantando práticas e métodos ágeis no Ikwa.

Eu falei sobre ‘Comunidades Dinamicamente Tipadas’.


Performance Optimization WordPress Plugins by W3 EDGE