Método com vários returns  XML
Índice dos Fóruns » Java Básico
Autor Mensagem
fzampa
Virtual Machine Man
[Avatar]

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?


[MSN]
Rafael Steil
Administrador
[Avatar]

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
[Email] [WWW]
fzampa
Virtual Machine Man
[Avatar]

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.


[MSN]
marcioa1
Virtual Machine Man
[Avatar]

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,
[Email]
fzampa
Virtual Machine Man
[Avatar]

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?


[MSN]
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

[WWW]
Thiago Senna
GUJ Master
[Avatar]

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
[Email]
Kleber Santos
JavaChild
[Avatar]

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.
[MSN] [ICQ]
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

Fabricio Cozer Martins
GUJ Ranger
[Avatar]

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
[MSN] [ICQ]
cv
Moderador
[Avatar]

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
[Email] [WWW] [Yahoo!] [MSN] [ICQ]
fzampa
Virtual Machine Man
[Avatar]

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


[MSN]
Thiago Senna
GUJ Master
[Avatar]

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
[Email]
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

[WWW]
fzampa
Virtual Machine Man
[Avatar]

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



[MSN]
 
Índice dos Fóruns » Java Básico
Ir para:   
Powered by JForum 2.1.8 © JForum Team