Switch case

Pessoal, o comando break após o default tem algum efeito?
por exemplo, neste caso:

    public Map<String, Boolean> getContext(Integer context, DCIteratorBinding dcib){
        Map<String, Boolean> mapContext = new HashMap<String, Boolean>();
        switch(context){
            case INICIAL:
                mapContext = getTipoReferenciaNivelInicial();
                break;
            case EXCLUIR:
                mapContext = getTipoReferenciaNivelExcluir();
                break;
            case SALVAR:
                mapContext = getTipoReferenciaNivelSalvar();
                break;
            case LINHA_DO_GRID_SELECIONADA:
                mapContext = getLinhaDoGridSelecionada(dcib);
                break;
            default:
                logger.error("Contexto solicitado não existe");
                break;
        }
        
        return mapContext;    
    }

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).

Obrigado entanglement

Melhor ainda é eliminar o switch:

Forma de fazer isso 1 (usar um map):

[code]Map<Integer, Map<String, Boolean>> contexts = new Map<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”);
return Collections.emptyMap();
}

return contexts.get(context);[/code]

Forma de fazer isso 2 (substituir o integer por um enum e polimorfismo):
http://www.guj.com.br/posts/list/55885.java#293436

Legal ViniGodoy, realmente é um pouco complexo, mas gostei da idéia.

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.

Não falta ali um ‘not’ ?

Faltava sim. Mas acho que ele captou a idéia. :slight_smile:

ué, o not está lá sim ‘!’.

rsrsrs

Eu acrescentei depois. Até pq tem gente que visita o tópico, recorta e cola código e não lê até o final.

Oi,

Acho que por pratica não gosto de colocar return no meio do código… Fica muito + lindo utilizar o if ? :

Tchauzin!

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.