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!

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.

Conheça a MVC 1.0, a nova JSR para um framework MVC action-based na JEE 8

Depois de muito tempo o pessoal da JCP resolveu ouvir a comunidade de desenvolvedores e na última semana lançaram a proposta inicial da JSR responsável pelo novo framework Web MVC action-based para Java EE 8, a MVC 1.0. O interessante dessa nova especificação é que ela não veio para competir com o JSF ou tirá-lo de cena, mas sim para trazer uma nova abordagem de desenvolvimento Web para o desenvolvedores e arquitetos na plataforma JEE.

É possível ter mais detalhes sobre a especificação no recente artigo no blog do desenvolvedores da Triadworks: MVC 1.0: JSR para um framework MVC action-based na Java EE 8 . 

A verdade é que eu estou muito ansioso por essa nova especificação, pois apesar de gostar e ter trabalhado muito tempo com JSF, além de ministrar o curso de JSF 2 com Spring na TriadWorks, eu sempre tive um maior interesse por frameworks baseados em ações, como VRaptor, Spring MVC e Ruby on Rails. Na verdade, minha vida como desenvolvedor Web Java começou com frameworks desse estilo, como Struts 1.2, talvez por isso eu goste tanto de estar perto do HTTP. :-)