Boas práticas  XML
Índice dos Fóruns » Java Básico
Autor Mensagem
rbcastro
Debugger

Membro desde: 11/07/2011 13:44:41
Mensagens: 54
Offline

Olá pessoal!

Tenho uma dúvida relacionada a bloco de comando.

No Delphi há necessidade de um bagin end somente se houver mais de uma ação. Ex.


Caso seja somente uma ação ficaria somente assim:


Com java eu pecebi que é feito conforme a primeira opção mesmo quando há somente uma ação a ser executada:




É dessa forma mesmo, deve ser aberto um bloco ({) independente da quantidade de ações?

Obrigado.
pedruhenrik
GUJ Master
[Avatar]

Membro desde: 08/05/2008 11:48:36
Mensagens: 1043
Localização: São Paulo - SP
Offline

até da p/ fazer sem abrir o bloco,


EU não vejo isso como uma boa prática, então EU SEMPRE crio o "bloco" independente de quantas ações serão realizadas.

att,

...tem um plano A e tem um plano B...

http://twitter.com/pedruhenrik
[Email] [MSN]
nel
JWizard
[Avatar]

Membro desde: 01/10/2009 13:51:10
Mensagens: 2364
Offline

Oi!

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:



Ou um laço como este:



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.

Atrapalhei ou ajudei?
Abraços.

"Se houver a terceira guerra mundial eu não sei como será mas a quarta será com paus e pedras" Albert Einsten.
pedruhenrik
GUJ Master
[Avatar]

Membro desde: 08/05/2008 11:48:36
Mensagens: 1043
Localização: São Paulo - SP
Offline

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,

...tem um plano A e tem um plano B...

http://twitter.com/pedruhenrik
[Email] [MSN]
charlesbraw
JavaChild
[Avatar]

Membro desde: 04/06/2008 10:21:10
Mensagens: 143
Localização: Minas Gerais
Offline

É boa prática colocar as chaves sempre.

Se você optar por não colocar, vai ter que desabilitar essa verificação em quase todos programas que trabalham com "qualidade de código".

Também prefiro colocar.

This message was edited 1 time. Last update was at 04/08/2011 16:26:41

nel
JWizard
[Avatar]

Membro desde: 01/10/2009 13:51:10
Mensagens: 2364
Offline

pedruhenrik wrote: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,


Entendo.
Um exemplo que pode confundir:



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.

Abraços!

"Se houver a terceira guerra mundial eu não sei como será mas a quarta será com paus e pedras" Albert Einsten.
nel
JWizard
[Avatar]

Membro desde: 01/10/2009 13:51:10
Mensagens: 2364
Offline

charlesbraw wrote:É boa prática colocar as chaves sempre.

Se você optar por não colocar, vai ter que desabilitar essa verificação em quase todos programas que trabalham com "qualidade de código".

Também prefiro colocar.


O Sonar é um deles

"Se houver a terceira guerra mundial eu não sei como será mas a quarta será com paus e pedras" Albert Einsten.
Mephy
JavaChild
[Avatar]

Membro desde: 04/04/2011 18:05:37
Mensagens: 126
Localização: SJRP-SP
Offline

segundo a convenção do Java pela Oracle, o correto seria isso, se não me engano:


preguiça de procurar agora, mas provavelmente no site da Oracle você acha o artigo falando de todas as boas práticas "default" do Java

Incrível currículo a meu favor:
estudante do ensino médio (3º)

se não entendeu algum símbolo que usei, provavelmente vai achar aqui: http://en.wikipedia.org/wiki/List_of_emoticons
rbcastro
Debugger

Membro desde: 11/07/2011 13:44:41
Mensagens: 54
Offline

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:



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.
romarcio
JWizard
[Avatar]

Membro desde: 17/12/2008 10:05:49
Mensagens: 2434
Localização: Santa Maria/RS
Offline

Eu aconselho a usar as chaves. Como já disseram, é um boa prática.

Bacharel em Sistemas de Informação.
Oracle Certified Professional, Java SE 6 Programmer

Blog | Facebook | Twitter
[WWW]
Mephy
JavaChild
[Avatar]

Membro desde: 04/04/2011 18:05:37
Mensagens: 126
Localização: SJRP-SP
Offline

só pra completar, seguem os links da convenção Java pela Oracle
Code Convention: http://www.oracle.com/technetwork/java/codeconvtoc-136057.html
Statements: http://www.oracle.com/technetwork/java/codeconventions-142311.html#449

Incrível currículo a meu favor:
estudante do ensino médio (3º)

se não entendeu algum símbolo que usei, provavelmente vai achar aqui: http://en.wikipedia.org/wiki/List_of_emoticons
MatheusFalcade
JavaBaby

Membro desde: 09/08/2011 17:32:49
Mensagens: 86
Offline

sempre uso as chaves "{}" e sempre uso o ctrl+shift+F é bom pra acostumar...tem a Java code convention pra saber bem as boas praticas (:

"Stay hungry, stay foolish"
flaviojmendes
Thread.start()
[Avatar]

Membro desde: 18/08/2009 12:19:26
Mensagens: 33
Offline

Fiz um post sobre esse assunto. Onde me baseei no manual da Oracle de boas práticas.

http://www.flaviojmendes.com/blog/2012/02/09/boas-praticas-em-java-guia-definitivo/

Flávio J. Mendes
flaviojmendes@gmail.com
http://www.flaviojmendes.com
[WWW]
rmendes08
GUJ Master
[Avatar]

Membro desde: 29/05/2008 14:09:28
Mensagens: 1617
Offline

rbcastro wrote: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:



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.


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

"A Técnica é transformada em Arte por quem a emprega"

"O futuro pertence àqueles que acreditam na beleza de seus sonhos"

Computadores Fazem Arte

http://www.uaijug.com.br

"É importante estabelecer uma estrutura de alto nível, mas isso não significa criar uma infinidade de diagramas de classes detalhados."
flaviojmendes
Thread.start()
[Avatar]

Membro desde: 18/08/2009 12:19:26
Mensagens: 33
Offline

rbcastro wrote: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:



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.


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.

Flávio J. Mendes
flaviojmendes@gmail.com
http://www.flaviojmendes.com
[WWW]
 
Índice dos Fóruns » Java Básico
Ir para:   
Powered by JForum 2.1.8 © JForum Team