Estou um pouco confuso sobre quando ou não incluir break
após o último caso, com frequência default
.
switch (type) {
case 'product':
// Do behavior
break;
default:
// Do default behavior
break; // Is it considered to be needed?
}
break
Meu único objetivo é, no meu entendimento, impedir que o código seja executado no restante da switch
caixa.
Considera-se então mais lógico ter um break
último devido à consistência ou ignorar devido à break
aplicação de nenhum uso funcional? Ambos são lógicos de maneiras diferentes, na minha opinião.
Até certo ponto, isso pode ser comparado ao final de um .php
arquivo ?>
. Eu nunca termino ?>
principalmente devido ao risco de gerar espaços em branco, mas pode-se argumentar que seria lógico finalizar o arquivo.
fonte
break
durar o caso também :)break
(ou outra instrução de fluxo de controle que sai docase
) é tecnicamente necessária após a última alternativa.switch
nos idiomas existentes e queriam evitá-los. As regras que o C # impõe praticamente correspondem às recomendações da minha resposta.break
como um NO-OP em vez de gerar umjmp
para a próxima instrução, correto?Dada a ambiguidade existente em torno do uso de
switch-case
na maioria dos idiomas, ao usá-lo , sugiro sempre o uso de umabreak
declaração, exceto quando explicitamente e por design não desejado .Em parte, isso ocorre porque faz com que cada
case
chamada pareça a mesma, o que, na minha opinião, melhoraria a legibilidade. Mas também significa que se alguém (até você) optar por inserir umcase
após o último em um estágio posterior, não precisará se preocupar em verificar o bloco anterior, o que poderia ajudar a reduzir os erros ao adicionar novo código.fonte
case foo: case bar: ...
), coloquei um comentário explícito no sentido de que quero que o caso ocorra. Torna muito mais claro.// no break
no lugar debreak;
[[fallthrough]]
atributo no caso de C ++.Não é
break
necessário após o último caso. Eu uso a palavra " last " (não padrão ), porque não é necessário caso padrão é o último caso.E nós sabemos, a
break
é necessário entre doiscase
s consecutivos . Às vezes, usoif(a!=0)
no meu código para obter mais legibilidade quando outras pessoas fazem referência ao meu código. Eu posso optar por usarif(a)
, isso seria uma questão de minha escolhafonte
case
no final do seuswitch
sem verificar sebreak
ele existe (isso seria culpa do programador, mas é melhor estar seguro - por qualquer motivo, porque você pode ser que programador em 6 meses-),
no final de matrizes, caso um novo valor seja inserido. No entanto que quebra alguns códigos e geralmente parece :) feio,
. No caso,default
foi projetado para ser o último caso. Talvez o idioma considere umbreak
depois dele como um erro. Supondo quebreak
fosse permitido apenas um diferenciador entre dois casos.