Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Os 10 Maus Hábitos dos Desenvolvedores JSF

Os 10 Maus Hábitos dos Desenvolvedores JSF

(Palestra ministrada em diversos eventos desde NOV-2008)

Toda tecnologia tende a trazer consigo um novo paradigma de como desenvolver partes específicas de software, contudo, algumas novas práticas nem sempre são entendidas, e algumas vezes antigas práticas permanecem dentro do novo paradigma tornando-se assim maus hábitos, e com JSF não seria diferente.

Aqui será apresentado 10 discussões sobre os maus hábitos mais comuns entre os desenvolvedores JSF, hábitos encontrados não somente entre iniciantes, mas também entre alguns desenvolvedores mais experientes, e por sua vez será apresentado soluções para cada um deles.

Rafael Ponte

October 22, 2011
Tweet

More Decks by Rafael Ponte

Other Decks in Technology

Transcript

  1. Os 10 (dez) maus hábitos dos desenvolvedores JSF Rafael Ponte

    http://www.rponte.com.br [email protected] Tarso Bessa http://www.tarsobessa.com [email protected]
  2. Quem? • Desenvolvedor • Coordenador do grupo JavaSF • Entusiasta

    Java e JSF • Consultor da TriadWorks “Rafael Ponte” • Arquiteto Java • Entusiasta Java e JSF • Membro do Cejug • Trabalha na Dataprev “Tarso Bessa”
  3. A maioria dos desenvolvedores web que já trabalharam ou trabalham

    com algum framework “action-like” acabam tendo grandes dificuldades ao desenvolverem com JSF.
  4. ✔ Myfaces Tomahawk [t:saveState] ✔ Myfaces Orchestra ✔ Myfaces Trinidad

    [pageFlowScope] ✔ JBoss Seam ✔ JBoss Richfaces [a4j:keepAlive] ✔ etc mais longo que request | mais curto que session
  5. Alterar o estado de algum componente no lado cliente [browser]

    através de javascript e esperar que isso seja “entendido” pelo JSF
  6. Pensar mais orientado a objetos e deixar com que os

    componentes troquem objetos e não “chaves primárias”
  7. //immediate=false private UIInput input; //immediate=true public void calcTaxes(ActionEvent e) {

    String dateStr = (String) input.getSubmittedValue(); Date date = convertDate ( dateStr ); if( date.after ( otherDate ) ) { //calculate } }
  8. public class LoginPhaseListener implements PhaseListener { //on RESTORE_VIEW public void

    afterPhase(PhaseEvent e) { if( !isLoggedIn() && !isLogin() ){ //navigate to login page } } }
  9. Usar /faces/* ou *.jsf quando se tem páginas em xhtml

    pode levar a uma exposição do código fonte.
  10. Uma das melhores maneiras de matar a escalabilidade da aplicação

    é a utilização indiscriminada da session
  11. public class Bean { @PostConstruct public void initialize(){ this.users =

    service.findAllUsers(); } public List<User> getUsersList() { return this.users; } } - Callback -
  12. public class Bean { public void search(ActionEvent e){ this.users =

    service.findUsers( … ); } public List<User> getUsersList() { return this.users; } } - Evento -