O excesso de ifs no seu código JavaScript

O excesso de ifs no código é comum quando trabalhamos com JavaScript e parece normal e imprescindível em muitos casos, mas na verdade é um problema que pode trazer maus cheiros, como repetição de código, falta de legibilidade e prejudicar diretamente na manutenção do software.

Para resolver isso sem muito esforço, podemos usar práticas e princípios de orientação a objetos, como polimorfismo e herança. Em linguagens dinâmicas (como JavaScript, Ruby e Python) nós podemos tirar vantagens da linguagem e utilizar uma técnica mais simples porém tão poderosa quanto polimorfismo, neste caso, Duck Typing.

Para entender o uso da técnica de duck typing e remover o aglomerado de ifs do seu código, você pode ler o artigo no blog dos desenvolvedores da TriadWorks. Através de um exemplo prático e didático fica fácil enxergar a problemática e a solução com o uso de duck typing.

Este problema não só ocorre com JavaScript, mas com várias outras linguagens e paradigmas, inclusive com Java. Por esse motivo, é importante entender como podemos melhorar a qualidade do nosso código com práticas de orientação a objetos!

Tagged with: , , , , , , , , , , ,
Posted in Boas Práticas, Desenvolvimento de Software, Engenharia de Software, Java, JavaScript, web

Qual controle transacional usar com Spring: AOP ou @Transactional ?

Sempre que iniciamos um novo projeto com Spring precisamos decidir qual estratégia de controle transacional utilizar. Normalmente acabamos optando pelo controle transacional declarativo em vez do programático, no entanto, temos ainda que decidir se iremos seguir uma das estratégias: AOP ou @Transactional.

Mas quais os benefícios de uma abordagem ou de outra? Quais as desvantagens de utilizar AOP? E a anotação @Transactional? Para sanar estas dúvidas, o blog dos desenvolvedores da TriadWorks acaba de publicar mais um artigo, com o tema Controle transacional declarativo com Spring: AOP ou @Transactional. O post apresenta os prós e contras de cada abordagem, o que pode ajudar arquitetos e desenvolvedores mais seniores a tomar uma decisão mais consciente!

Eu já trabalhei com as duas abordagens, e por esse motivo prefiro trabalhar com o uso da anotação @Transactional, pois o código fica mais explicito e ainda consigo fazer o desenvolvedores da equipe pensarem sobre o fluxo das transações dentro da aplicação. E você, qual abordagem prefere?

Tagged with: , , , , , , , , ,
Posted in Boas Práticas, Desenvolvimento de Software, Java, JEE, Spring

Controle fino do HTML gerado com Pass Through Attributes e Elements do JSF 2.2

Uma das maiores vantagens e também um dos problemas mais irritantes do JSF é o controle fino do HTML gerado pelo componentes. Em certas situações não temos a necessidade de nos preocupar com o HTML, CSS ou JavaScript gerado pelos componentes; noutras, por outro lado, precisamos fazer ajustes finos no código renderizado para o browser pelos componentes para fazer correções na página relacionados a cross-browser, responsividade ou simplesmente utilizar determinados plugins do jQuery.

Esse problema ficou mais critico com a chegado do HTML5, na qual trouxe vários atributos e elementos para simplificar e melhorar o desenvolvimento Web, como o atributo placeholder, que adiciona um texto em um input vazio. Se tentarmos adicionar estes atributos do HTML5 (ou mesmo customizados) diretamente no componente eles serão ignorados pelas classes renderer’s do JSF, como a seguir:

<h:inputText id="email" value="#{bean.email}" placeholder="placeholder" />

O código acima não renderizará o atributo placeholder para o browser. Ele simplesmente será ignorado pelo JSF. Até a versão 2.1 do JSF isso só se resolvia estendendo e alterando as classes renderizadores dos componentes, o que pode dar mais trabalho do que um desenvolvedor gostaria.

Mas com o JSF 2.2 este problema não mais existe, pois esta nova versão trouxe consigo o suporte HTML5 através do HTML Friendly Markup, na qual nos permite inserir e modificar atributos diretamente no componente (pass through attributes) e até mesmo escrever páginas 100% HTML na qual podem ter seus elementos ligados a componentes no lado servidor (pass through elements), o que é ótimo para tirar proveito das novidades do HTML5.

Tagged with: , , , , , , , , , ,
Posted in Java, JEE, JSF, JSF2, Uncategorized, web