Como sabemos, chaves para casos de switch não são necessárias. O uso de casos de colchetes pode causar confusão sobre o escopo de um caso.
Uma chave de abertura é geralmente associada a algo significativo como o início de uma função ou início de um loop ou início de declaração de classe ou início de inicialização de array, etc ... Sabemos que, um caso quebras de bloco de switch quando encontra uma quebra declaração. Assim, o uso de colchetes parece sugerir a ideia de um escopo diferente para o caso para um leitor ignorante. Portanto, é melhor evitar o uso de chaves para melhorar a legibilidade da programação.
ou seja, quando eu tenho algo como,
switch(i)
{
case 1 :
{
}
System.out.println("Hello from 1");
case 2:
....
}
"Hello from 1" é impresso. Mas o uso de chaves pode sugerir a um leitor ignorante que o caso termina com '}', já sabendo o que as chaves geralmente significam no caso de loops, métodos etc.
Como temos instruções jump-to-label em 'C', o controle apenas muda para case e continua sua execução. Então, com esse entendimento, é apenas uma prática RUIM usar chaves ao escrever casos para switch.
Tecnicamente falando, você pode cercar qualquer bloco de seu código com um par adicional de chaves quando usado com sintaxe válida. Usar chaves no switch parece tão ruim, pelo menos para mim, pois parece dar uma sensação diferente como eu disse acima.
Minha sugestão: apenas evite usar chaves circundantes para casos de switch.