Pessoal, o comando break após o default tem algum efeito?
por exemplo, neste caso:
publicMap<String,Boolean>getContext(Integercontext,DCIteratorBindingdcib){Map<String,Boolean>mapContext=newHashMap<String,Boolean>();switch(context){caseINICIAL:mapContext=getTipoReferenciaNivelInicial();break;caseEXCLUIR:mapContext=getTipoReferenciaNivelExcluir();break;caseSALVAR:mapContext=getTipoReferenciaNivelSalvar();break;caseLINHA_DO_GRID_SELECIONADA:mapContext=getLinhaDoGridSelecionada(dcib);break;default:logger.error("Contexto solicitado não existe");break;}returnmapContext;}
Não.
Mas por conveniência e regras de estilo, é sempre bom usá-lo.
(Se não me engano, ferramentas como o PMD e CheckStyle checam se você não se esqueceu de pôr o “break” no default).
levimendes
Obrigado entanglement
ViniGodoy
Melhor ainda é eliminar o switch:
Forma de fazer isso 1 (usar um map):
Map<Integer,Map<String,Boolean>>contexts=newMap<Integer,Map><String,Integer>>();contexts.put(INICIAL,getTipoReferenciaNivelInicial());contexts.put(EXCLUIR,getTipoReferenciaNivelExcluir());contexts.put(SALVAR,getTipoReferenciaNivelSalvar());contexts.put(LINHA_DO_GRID_SELECIONADA,getLinhaDoGridSelecionada(dcib));if(!contexts.contains(context)){logger.error("Contexto solicitado não existe");returnCollections.emptyMap();}returncontexts.get(context);
Legal ViniGodoy, realmente é um pouco complexo, mas gostei da idéia.
ViniGodoy
A vantagem do enum é que parece complexo, mas não é tanto.
Principalmente quando vc começa a ter várias condições, para várias coisas diferentes, o que implicaria em ter vários switchs espalhados pelo código. No enum, tudo fica concentrado em um lugar só, o que deixa o sistema dezenas de vezes mais fácil de manter.
Ele é uma implementação “hardcored” do padrão Strategy. Fica fácil para converte-lo para classes normais, caso no futuro você queira fazer injeção de condições, por exemplo.
pmlm
Não falta ali um ‘not’ ?
ViniGodoy
Faltava sim. Mas acho que ele captou a idéia.
levimendes
ué, o not está lá sim ‘!’.
rsrsrs
ViniGodoy
Eu acrescentei depois. Até pq tem gente que visita o tópico, recorta e cola código e não lê até o final.
lina
Oi,
Acho que por pratica não gosto de colocar return no meio do código… Fica muito + lindo utilizar o if ? :
Tchauzin!
ViniGodoy
Eu prefiro usar o return pois quem está analisando o código não precisa continuar lendo para saber que aquilo é uma condição de saída. O return também evita identação desnecessária (que seria necessária se aquele if tivesse um else) e variáveis temporárias.
Mas claro, isso é questão de opinião, gosto e convenção. Use o que sua equipe decidir que é melhor.