| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 22/06/2005 10:56:38
|
fzampa
Virtual Machine Man
![[Avatar]](/images/avatar/e2c4a40d50b47094f571e40efead3900.jpg)
Membro desde: 05/11/2004 18:22:45
Mensagens: 615
Localização: Belo Horizonte
Offline
|
Pessoal,
isso é sinal de um bom código?
no meio do método tem um monte de return.... do jeito que tá aqui me lembrou os GOTO de antigamente...
isso é uma boa prática?
|
|
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 22/06/2005 11:02:06
|
Rafael Steil
Administrador
![[Avatar]](/images/avatar/8e296a067a37563370ded05f5a3bf3ec.jpg)
Membro desde: 31/08/2002 02:35:53
Mensagens: 5984
Localização: São Paulo
Offline
|
Ao inves de
um
ja da conta .
Rafael
|
"working code attracts people who want to code. Design documents attract people who want to talk about coding - Charles Miller"
http://rafaelsteil.com
http://twitter.com/rafaelsteil
http://www.jforum.net
http://www.flickr.com/photos/rafaelsteil |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 22/06/2005 11:33:05
|
fzampa
Virtual Machine Man
![[Avatar]](/images/avatar/e2c4a40d50b47094f571e40efead3900.jpg)
Membro desde: 05/11/2004 18:22:45
Mensagens: 615
Localização: Belo Horizonte
Offline
|
sim sim sim ....
mas o que na verdade eu queria saber mesmo é se ficar utilizando vários return dentro do método é uma boa prática...
em vários if's tem um return... aí que está minha dúvida.
Obrigado.
|
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 22/06/2005 11:33:45
|
marcioa1
Virtual Machine Man
![[Avatar]](/images/avatar/169779d3852b32ce8b1a1724dbf5217d.jpg)
Membro desde: 29/11/2003 12:52:10
Mensagens: 736
Localização: Valinhos-SP
Offline
|
fzampa,
Concordo com você. Isto sempre me incomodou em java. É questão de costume ( será ??? )
Márcio
|
SCJP 1.4, |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 22/06/2005 11:55:50
|
fzampa
Virtual Machine Man
![[Avatar]](/images/avatar/e2c4a40d50b47094f571e40efead3900.jpg)
Membro desde: 05/11/2004 18:22:45
Mensagens: 615
Localização: Belo Horizonte
Offline
|
Sim Márcio, e nesta situacao tenho duas opcoes:
ou deixar o método cheio de returns (assim como eu o peguei) ou trocar cada return por um else...
Neste caso o método é muito, mas muito grande o que iria dificultar ainda mais a legibilidade do código.
De certo o ideal seria reescrever tudo, mas como? Utilizando os mesmos returns?
|
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 22/06/2005 11:59:01
|
thingol
Moderador
Membro desde: 29/07/2004 16:10:13
Mensagens: 17543
Offline
|
Bom, se você acha que pode dar problema com vários returns (uma das regras do PMD ou CheckStyle, não lembro qual, é justamente ter apenas um return)... então use um só. Mas obviamente se você fizer isso, vai dar problemas de compreensão de código (o seu código vai acabar ficando cheio de ifs encadeados, o que não é uma boa prática também - o PMD também reclama disso, porque o seu código ficou muito complexo).
Como muitas vezes tenho de tirar esses warnings e não tenho tempo de refatorar corretamente o código, faço a seguinte malandragem (reaproveitando seu código )
This message was edited 1 time. Last update was at 22/06/2005 11:59:58
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 22/06/2005 12:00:13
|
Thiago Senna
GUJ Master
![[Avatar]](/images/avatar/78719f11fa2df9917de3110133506521.jpg)
Membro desde: 11/02/2005 08:08:02
Mensagens: 1595
Offline
|
fzampa wrote:Sim Márcio, e nesta situacao tenho duas opcoes:
ou deixar o método cheio de returns (assim como eu o peguei) ou trocar cada return por um else...
Neste caso o método é muito, mas muito grande o que iria dificultar ainda mais a legibilidade do código.
De certo o ideal seria reescrever tudo, mas como? Utilizando os mesmos returns?
Olá!
Pessoalmente eu prefiro usar return...
Não gosto de if e else por q acho que o código fica mais legível, e quanto menor for o código para mim, melhor. Por isso, sempre faço o possível para usar o returns, e criar if s que não abrem e nem fecham chaves "{"!!
Thiago
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 22/06/2005 12:07:18
|
Kleber Santos
JavaChild
![[Avatar]](/images/avatar/55fd1368113e5a675e868c5653a7bb9e.jpg)
Membro desde: 17/06/2005 12:05:13
Mensagens: 116
Localização: Guarulhos - São Paulo
Offline
|
Neste caso o método é muito, mas muito grande o que iria dificultar ainda mais a legibilidade do código.
eu uso switch case, deixa mais legivel
|
Ateu, Graças a Deus. |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 22/06/2005 12:55:31
|
ZehOliveira
GUJ Ranger
Membro desde: 12/12/2003 22:13:49
Mensagens: 964
Localização: Maceio-AL
Offline
|
Os casos em que se pode usar switch() são pouquissimos. Até pela própria sintaxe dele.
This message was edited 1 time. Last update was at 22/06/2005 12:56:13
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 22/06/2005 13:04:31
|
Fabricio Cozer Martins
GUJ Ranger
![[Avatar]](/images/avatar/2ecd2bd94734e5dd392d8678bc64cdab.jpg)
Membro desde: 08/05/2004 10:22:03
Mensagens: 935
Localização: Salvador/Brasil
Offline
|
Acho (opnião/gosto) que usando return é melhor de entender...
diminui o tamanho do código e diminui obviamente o encadeamento do codigo...
e nem sempre vc pode usar switch ...
|
Fabrício Cozer Martins
Analista de Sistemas
Bacharel em Ciência da Computação da UFBa
Sun Certified Programmer for Java 2 Platform 1.4
Sun Certified Web Component Developer for J2EE 1.4 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 22/06/2005 14:51:06
|
cv
Moderador
![[Avatar]](/images/avatar/210f760a89db30aa72ca258a3483cc7f.jpg)
Membro desde: 04/04/2003 00:32:12
Mensagens: 7842
Localização: São Paulo, SP
Offline
|
Eu acho que essa discussao toda nao chegou no ponto certo da questao: se colocar apenas um return* vai deixar o seu metodo complexo demais, sera que nao ta na hora de pensar na complexidade do metodo e dar uma massageada na logica dele? Um refactoring as vezes nao responde a pergunta, mas elimina ate a existencia dela
* sem as gambiarras como a do thingol, que alias eh mto bem bolada
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 22/06/2005 15:12:42
|
fzampa
Virtual Machine Man
![[Avatar]](/images/avatar/e2c4a40d50b47094f571e40efead3900.jpg)
Membro desde: 05/11/2004 18:22:45
Mensagens: 615
Localização: Belo Horizonte
Offline
|
Concordo com vc's, acho que o melhor seria mesmo colocar apenas um return.
Mas, como eu falei, é necessário um grande refactoring, e já pensando nisso que levantei essa questão... hj há vários returns e a leitura do código está difícil. Espero que consiga melhorar depois de colocar um return só e um boa reescrita...
|
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 22/06/2005 15:19:34
|
Thiago Senna
GUJ Master
![[Avatar]](/images/avatar/78719f11fa2df9917de3110133506521.jpg)
Membro desde: 11/02/2005 08:08:02
Mensagens: 1595
Offline
|
fzampa wrote:Concordo com vc's, acho que o melhor seria mesmo colocar apenas um return.
Mas, como eu falei, é necessário um grande refactoring, e já pensando nisso que levantei essa questão... hj há vários returns e a leitura do código está difícil. Espero que consiga melhorar depois de colocar um return só e um boa reescrita...
Bom, se vc não entende nada no código é por que o código é uma porcaria. Não é por usar ou deixar de usar return que um código fica ilegível!
Thiago
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 22/06/2005 15:30:52
|
thingol
Moderador
Membro desde: 29/07/2004 16:10:13
Mensagens: 17543
Offline
|
O problema das gambiarras como a minha (break exit) é que você precisa saber usar, sem que seja uma solução para tudo.
No meu tempo de C++ havia uma outra gambiarra, mas menos poderosa (break exit consegue sair de N níveis, mas este "break" só consegue sair de um nível
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 22/06/2005 16:49:13
|
fzampa
Virtual Machine Man
![[Avatar]](/images/avatar/e2c4a40d50b47094f571e40efead3900.jpg)
Membro desde: 05/11/2004 18:22:45
Mensagens: 615
Localização: Belo Horizonte
Offline
|
Thiago Senna wrote:
Bom, se vc não entende nada no código é por que o código é uma porcaria. Não é por usar ou deixar de usar return que um código fica ilegível!
Thiago
Bom, eu nao falei que não dá pra entender nada no código, apenas falei que sua leitura está difícil.
E foi justamente pensando em refatorar que vim perguntar qual a melhor situação para poder aplicar na hora certa
Ps.: Pude chegar numa conclusão:
Entre usar ou não usar vários returns utilize o bom senso
This message was edited 1 time. Last update was at 22/06/2005 16:50:26
|
|
|
|
 |
|
|