Arquivo

Posts Tagged ‘Java’

Longevidade para seu código

No inicio de dezembro, em um periodo próximo ao do JavaOne Brasil, aconteceu o já famoso BelJungle, encontro anual do grupo de usuário Javas do estado do Pará. E como eu andava meio, pra não dizer muito, afastado dos eventos e encontros por rasões obvias [3 mil km de distância faz disso obvio, não?] , resolvi dessa vez ajudar um pouco mais. Claro que toda a parte da divulgação e corrida por patricinio, colaboradores, não foi feito por mim. Mas aproveitei pra compartilhar algumas das experiências que eu andei vivenciando nesse meio tempo que eu passei programando.

Aproveitando a dica, coloco os slides a disposição. Eles estão bem intuitivos, mas qualquer duvida ou questionamento, só usar o blog 🙂

ps: Caso os slides demorem mais que o habitual para carregar, talvez seja melhor baixar a apresentação neste link: http://bit.ly/hg6nB4. É seguro, prometo 🙂

Anúncios
Categorias:Eventos, Java, TI Tags:, ,

Grails from scratch

Alimentando o já movimentado assunto sobre frameworks para desenvolvimento web, hoje eu apresento uma opção que, acredito eu, será realidade no mercado de software nos próximos anos: Grails. O motivo? Agilidade. Principalmente no presente momento em que todo mundo quer (leia-se precisa) ser ágil.

Em alguns cenários, o principal empecilho pra dar uma acelerada no processo de desenvolvimento/entrega de algum produto, está relacionado com a tecnologia em uso, além é claro de problemas como maturidade da equipe, elevada curva de aprendizado, etc. Quando se foca em tecnologia, algumas questões precisam ser respondidas, como: É possível elevar a produtividade sem, necessariamente, aumentar o esforço? Quais os ganhos eu terei, a curto prazo, com o framework x? Terei como utilizar o código legado com essa nova aplicação?

Em muitos casos, é capaz de você mesmo ter criado a sua solução from scratch para responder essas perguntas. Por outro lado, se você ainda está pesquisando quem poderia melhor sanar essas dificuldades, eu lhe indicaria fortemente o uso do Grails.

O porque de toda essa confiança vem nos próximos slides que apresentam um step-by-step bem básico pra criação do esqueleto de uma pequena aplicação, que utilizei em um minicurso na última semana. Aproveitando a deixa, fica pra quem também tiver interesse.

Lembrando que os exemplos foram todos retirados do livro Getting started with grails.

Dica em JSF: não coloque negócio nos métodos gets/sets

junho 16, 2010 1 comentário

Esse problema começa, primeiramente, com a péssima prática de criar gets/sets indiscriminadamente. Essa é uma cultura que vem de casa, ou melhor, das universidades que ensinam os alunos a criar os objetos sem comportamento, os POJO como são mais conhecidos. Até então não há nada de errado, até porque essa é uma das maneiras mais simples de entender a orientação a objetos. O problema só ocorre quando você leva esse conceito para objetos que não deveriam ser tratados como um POJO.

Vejamos um exemplo: Temos uma classe Estoque, com um atributo capacidadeTotal. Em que momento você usaria o método setCapacidadeTotal no dia-a-dia da aplicação? A não ser que o espaço físico tenha aumentado, é pouco provável que esse método seja invocado. É preciso restringir esse tipo de liberdade para não causar problemas futuros na implementação. A dica por hora é a seguinte: Só crie gets/sets que você tem certeza que serão utilizados no presente momento.

Esse é um problema que poucas pessoam encaram realmente como um problema, visto que não causa danos no código. E como esse é um caso que volta e meia aparece na lista de JSF, esse post serve como tentativa de eliminar esse mau cheiro de dentro do código. Agora mais especificamente no contexto de JSF, vejamos o exemplo do código a seguir:

<h:selectOneMenu required=”true” label=”Origem Recurso”
value=”#{linhaCreditoBean.idcidade}”>

<s:selectItems var=”cidade”
value=”#{linhaCreditoBean.cidades}”
noSelectionLabel=”Selecione” itemValue=”#{cidade.id}”
label=”#{cidade.siglacidade}” />

</h:selectOneMenu>

A maneira mais simples de se implementar o gerenciador desta página é com um atributo List de Cidade, e o método getCidade() com a consulta no banco. Bem claro e simples. Acontece que no decorrer do ciclo de vida do JSF os métodos get/sets são chamados várias vezes, dependendo do estado que o seu bean estiver atuando. O resultado é consultas indevidas e sobrecarga na aplicação.

Uma maneira simples de se resolver é criando um método somente para popular a lista. Além, é preciso avisar ao JSF que esse método deverá ser executado antes dos demais. Isso pode ser feito com a annotation @PostConstruct do JSF, ou a annotation @Create do JBoss Seam. Algo assim:

@Create
public void carregarCidades() {
cidades = dao.recuperarCidades();
}

Veja que é importante criar métodos com esse comportamento, pois no decorrer do ciclo de vida do JSF os métodos get/sets são chamados indiscriminadamente, dependendo do estado que o seu bean estiver atuando, o que gera consultas indevidas no projeto.

<h:selectOneMenu required=”true” label=”Origem Recurso”
value=”#{linhaCreditoBean.idcidade}” id=”cidade”>

<s:selectItems var=”cidade”
value=”#{linhaCreditoBean.cidades}”
noSelectionLabel=”Selecione” itemValue=”#{cidade.id}”
label=”#{cidade.siglacidade}” />

</h:selectOneMenu>