Isso é ponto de vista de cada um, uns dizem ser mais dificíl de entender o código as vezes quando não é usado o caracter “{” e “}” para delimitar um bloco.
Você pode ter vários if´s, for, while, tudo sem usar os delimitadores e obter o mesmo resultado e é ai que pode vir a confusão.
Talvez um simples if, como este:
if(condicao)
System.out.println("Teste");
Ou um laço como este:
for(String value : lista)
System.out.println(value");
Eu mesmo não coloco
A regra é simples, o caracter “;” indica uma linha de comando, seja ela qual for, atribuição, invocação de método e etc.
Quando não é usado o caracter delimitador o compilador entende que será executado exclusivamente uma linha para a sua condição, sejam vários if´s, for, while e etc.
eu sou daqueles q se perde todo sem as chaves, e tb o eclipse já gera o “bloco” prontinho e acho q raras vezes tem apenas uma ação dentro do if ou do laço rsrs.
[quote=pedruhenrik]eu sou daqueles q se perde todo sem as chaves, e tb o eclipse já gera o “bloco” prontinho e acho q raras vezes tem apenas uma ação dentro do if ou do laço rsrs.
att,[/quote]
Entendo.
Um exemplo que pode confundir:
[code]public static void main(String[] args) throws ParseException {
List lista = new ArrayList();
lista.add(“valor1”);
lista.add(“valor2”);
lista.add(“valor3”);
lista.add(“valor4”);
boolean teste = true;
if(teste)
for(String value : lista)
for(int i = 0; i < lista.size(); i++)
if(!teste)
System.out.println("Fim do laço!");
else
System.out.println(value);
} [/code]
Isso é algo que eu também sou contra. Não é algo que "bate o olho" e já compreende.
Mas para apenas um if-else, laço, não vejo problemas.
Com a experiência que tenho com Delphi meu parecer é o seguinte:
Só há necessidade de ser iniciar um bloco quando o mesmo for executar mais de uma ação:
Vejamos o exemplo do nel:
boolean teste = true;
if(teste)
for(String value : lista)
for(int i = 0; i < lista.size(); i++)
if(!teste)
System.out.println("Fim do laço!");
else
System.out.println(value);
Nesse caso se não for aberto um bloco na primeira condição e if (teste) = false, o segundo é quem será executado e isso com certeza fica confuso de compreender o que está acontecendo.
[quote=rbcastro]Com a experiência que tenho com Delphi meu parecer é o seguinte:
Só há necessidade de ser iniciar um bloco quando o mesmo for executar mais de uma ação:
Vejamos o exemplo do nel:
boolean teste = true;
if(teste)
for(String value : lista)
for(int i = 0; i < lista.size(); i++)
if(!teste)
System.out.println("Fim do laço!");
else
System.out.println(value);
Nesse caso se não for aberto um bloco na primeira condição e if (teste) = false, o segundo é quem será executado e isso com certeza fica confuso de compreender o que está acontecendo.[/quote]
Acontece que no Delphi a abertura de blocos é muito verbosa. Geralmente identa-se o begin-end e depois identa-se novamente o bloco de comandos. Isso de fato torna o código poluído. Mas no caso do Java e linguagens com sintaxe C-like, as chaves tornam o código mais leve, além de que pode-se abrir a chave na mesma linha do if ou for, sendo assim, não fica muito caro, em termos visuais, abrir um bloco de chaves mesmo para um comando só.
[quote=rbcastro]Com a experiência que tenho com Delphi meu parecer é o seguinte:
Só há necessidade de ser iniciar um bloco quando o mesmo for executar mais de uma ação:
Vejamos o exemplo do nel:
boolean teste = true;
if(teste)
for(String value : lista)
for(int i = 0; i < lista.size(); i++)
if(!teste)
System.out.println("Fim do laço!");
else
System.out.println(value);
Nesse caso se não for aberto um bloco na primeira condição e if (teste) = false, o segundo é quem será executado e isso com certeza fica confuso de compreender o que está acontecendo.[/quote]
De acordo com as especificações da Sun/Oracle SEMPRE se deve abrir e fechar as chaves, independentemente de haver uma ou mais instruções dentro do bloco.