| Enquete |
| Nomear parâmetros de métodos com o mesmo nome de campos é uma má prática? |
| Sim |
 
|
0% |
[ 0 ] |
| Não |
 
|
93% |
[ 14 ] |
| Depende do contexto |
 
|
7% |
[ 1 ] |
| Total de Votos: 15 |
|
| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 31/08/2007 09:32:28
|
Mantu
GUJ Ranger
![[Avatar]](/images/avatar/35285aa740b37f0b1933da97bf4ca4b9.jpg)
Membro desde: 27/03/2006 09:05:16
Mensagens: 961
Localização: São Paulo/SP
Offline
|
Olá pessoal!
Estive conversando com alguns colegas e caímos em uma discussão a respeito de parâmetros de métodos com o mesmo nome de campos da classe. Alguns colegas pregaram que é má prática fazer isso.
Bom, eu, por enquanto, discordo.
Primeiro, porque existe uma coisa chamada escopo, que faz parte da linguagem. Existem meios "legais" de dirimir uma ambiguidade de escopo (this, por exemplo).
Segundo, porque o código começa a ficar "sujo" se tivermos que prefixar ou sufixar os parâmetros só para terem nome diferente dos campos. Tendo o programador claras as regras de escopo de identificadores, torna-se desnecessária a adição de prefixos, sufixos e, o pior caso de todos, abreviações.
Terceiro, dependendo da IDE que se utiliza, acabamos até mesmo a anular um pouco da produtividade conferida pela IDE. No Eclipse, por exemplo, ele pode gerar os getters e os setters para nós, e ele já gera os setters com os parâmetros com mesmo nome do campo. Vejo um retrabalho desnecessário em ter que passar depois em cada um dos setters e ficar prefixando os campos.
Quarto, e não menos importante, fica mais claro e legível para o desenvolvedor que vai utilizar um método se os nomes dos parâmetros forem objetivos, sem prefixos, sufixos, etc.
Gostaria que os colegas contribuissem com suas opiniões a respeito desse assunto. Pois derrepente podem aparecer visões da questão que não estou enxergando no momento.
Valeu, pessoal!
|
[]'s
Mantu
"Vou lançar o 'Caguei'. Caguei para o 'Cansei'". Luciano Camargo
"O povo votou contra a opinião pública". Um certo jornalão da mídia golpista, a respeito da vitória de um certo cadidato a presidente do Brasil.
 |
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 31/08/2007 10:00:06
|
thingol
Moderador
Membro desde: 29/07/2004 16:10:13
Mensagens: 17543
Offline
|
Acho que os programas são feitos para serem lidos por gente também, e você sabe que gente tem os seguintes problemas:
- Dificuldades com regras de escopo;
- Dificuldade para distinguir entre minúsculas e maiúsculas;
- Dificuldade para distinguir entre o l e o 1, o 0 e o O, o b e o 6, o B e o 8, o 2 e o Z.
- Dificuldade para contar _.
Portanto acho que é bom nomear os parâmetros com nome um pouco diferente dos campos, e evitar o uso excessivo de "this" - por exemplo (é o que configurei no meu Eclipse):
ou, como já vi por aí, (embora não seja padrão e na verdade um pouco confuso - nunca lembro quem deve ter o "_", se é o atributo da classe ou se é o parâmetro):
This message was edited 1 time. Last update was at 31/08/2007 10:03:46
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 31/08/2007 10:06:49
|
Eduardo Bregaida
Moderador
Membro desde: 13/11/2003 14:11:35
Mensagens: 2416
Localização: São Caetano do Sul - SP
Offline
|
thingol wrote:Acho que os programas são feitos para serem lidos por gente também, e você sabe que gente tem os seguintes problemas:
- Dificuldades com regras de escopo;
- Dificuldade para distinguir entre minúsculas e maiúsculas;
- Dificuldade para distinguir entre o l e o 1, o 0 e o O, o b e o 6, o B e o 8, o 2 e o Z.
- Dificuldade para contar _.
Portanto acho que é bom nomear os parâmetros com nome um pouco diferente dos campos, e evitar o uso excessivo de "this" - por exemplo (é o que configurei no meu Eclipse):
ou, como já vi por aí, (embora não seja padrão e na verdade um pouco confuso - nunca lembro quem deve ter o "_", se é o atributo da classe ou se é o parâmetro):
Jamais colocar "_" nem pColor, coloca literal o nome, p/ minha pessoa isso é uma boa prática.
Pelo menos é "entendivel"
:D
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 31/08/2007 10:07:37
|
Alexandre Ferreira
Virtual Machine Man
![[Avatar]](/images/avatar/5898493fbdf4a44a24084021b2215f85.jpg)
Membro desde: 20/09/2006 20:07:03
Mensagens: 520
Localização: Rio de Janeiro
Offline
|
Thingol, ainda prefiro o sobreamento.
|
Alexandre Ferreira
Blog: http://alexandreferreira.com.br |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 31/08/2007 10:08:20
|
Mantu
GUJ Ranger
![[Avatar]](/images/avatar/35285aa740b37f0b1933da97bf4ca4b9.jpg)
Membro desde: 27/03/2006 09:05:16
Mensagens: 961
Localização: São Paulo/SP
Offline
|
thingol wrote:
Portanto acho que é bom nomear os parâmetros com nome um pouco diferente dos campos, e evitar o uso excessivo de "this" - por exemplo (é o que configurei no meu Eclipse):
Onde você conseguiu configurar o nome do parâmetro gerado pelo eclipse para os setters? Procurei e não achei
Sabe se dá pra configurar isso pra geração de construtores também?
This message was edited 1 time. Last update was at 31/08/2007 10:42:17
|
[]'s
Mantu
"Vou lançar o 'Caguei'. Caguei para o 'Cansei'". Luciano Camargo
"O povo votou contra a opinião pública". Um certo jornalão da mídia golpista, a respeito da vitória de um certo cadidato a presidente do Brasil.
 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 31/08/2007 10:10:54
|
nbluis
GUJ Master
![[Avatar]](/images/avatar/f0682320ccbbb1f1fb1e795de5e5639a.jpg)
Membro desde: 27/05/2006 01:31:51
Mensagens: 1531
Localização: Porto Alegre - RS
Offline
|
afsrj wrote:Thingol, ainda prefiro o sobreamento.
Concordo.
E inclusive coloco meu eclipse a reclamar "Unqualified access to instance field".
|
Luis Eduardo Bohrer
Any fool can write code that a computer can understand. Good programmers write code that humans can understand. |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 31/08/2007 10:14:32
|
Mantu
GUJ Ranger
![[Avatar]](/images/avatar/35285aa740b37f0b1933da97bf4ca4b9.jpg)
Membro desde: 27/03/2006 09:05:16
Mensagens: 961
Localização: São Paulo/SP
Offline
|
thingol wrote:Acho que os programas são feitos para serem lidos por gente também, [...]
Ué, concordo! Os programas devem serfeitos para ser lidos por gente que conheça a linguagem em questão. Ou consideremos que desenvolvedores não são gente? Talvez não sejamos mesmo, mas até aí, nada provado a respeito disso...
This message was edited 1 time. Last update was at 31/08/2007 10:24:41
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 31/08/2007 10:21:43
|
evandroshx
JavaBaby
![[Avatar]](/images/avatar/6b41f17abd11bbc46176560b301a4e24.jpg)
Membro desde: 28/05/2007 13:21:05
Mensagens: 75
Localização: São Carlos / SP
Offline
|
discussão interessante aberta pelo Mantu.
na minha opinião temos que dosar essas duas coisas. Por exemplo, nos métodos gets e sets, que são relativamente simples, não há necessidade de se atribuir prefixos ou sufixos aos parâmetros, afinal, acho que todo bom programador é capaz de entender o código:
Mas, se for utilizar o parâmetro várias vezes em métodos complexos, além de atribuí-lo para o atributo de classe, aí sim, acho que vale a pena passar o parâmetro com nome diferenciado.
Mas também concordo com o Heero Yuy, se for para passar o parâmetro com nome diferenciado então que se dê um nome entendível.
Flw galera.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 31/08/2007 10:32:32
|
Mantu
GUJ Ranger
![[Avatar]](/images/avatar/35285aa740b37f0b1933da97bf4ca4b9.jpg)
Membro desde: 27/03/2006 09:05:16
Mensagens: 961
Localização: São Paulo/SP
Offline
|
Alguém aí, pelo amor de Deus, sabe me dizer como configuro no eclipse aquilo que tingol falou que configurou no dele? E se dá pra fazer isso com construtores também?
|
[]'s
Mantu
"Vou lançar o 'Caguei'. Caguei para o 'Cansei'". Luciano Camargo
"O povo votou contra a opinião pública". Um certo jornalão da mídia golpista, a respeito da vitória de um certo cadidato a presidente do Brasil.
 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 31/08/2007 10:34:29
|
nbluis
GUJ Master
![[Avatar]](/images/avatar/f0682320ccbbb1f1fb1e795de5e5639a.jpg)
Membro desde: 27/05/2006 01:31:51
Mensagens: 1531
Localização: Porto Alegre - RS
Offline
|
acho que é...
Dentro das preferencias...
Java -> Code Style -> Code Template
Tem lá os templates
|
Luis Eduardo Bohrer
Any fool can write code that a computer can understand. Good programmers write code that humans can understand. |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 31/08/2007 10:41:35
|
Mantu
GUJ Ranger
![[Avatar]](/images/avatar/35285aa740b37f0b1933da97bf4ca4b9.jpg)
Membro desde: 27/03/2006 09:05:16
Mensagens: 961
Localização: São Paulo/SP
Offline
|
Valeu nbluis, mas já achei. Inclusive é quase onde você disse. Na verdade é diretamente em Java -> Code Style. Lá tem uma tabela chamada Conventions for variable names, é nesta tabela que conseguimos prefixar qualquer parâmetro, por exemplo
|
[]'s
Mantu
"Vou lançar o 'Caguei'. Caguei para o 'Cansei'". Luciano Camargo
"O povo votou contra a opinião pública". Um certo jornalão da mídia golpista, a respeito da vitória de um certo cadidato a presidente do Brasil.
 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 31/08/2007 10:42:09
|
thingol
Moderador
Membro desde: 29/07/2004 16:10:13
Mensagens: 17543
Offline
|
No Eclipse 3.2 você pode fazer: Project, Java Code Style, [X] Enable project specific settings, em Parameters edite "Prefix List" para o que você quiser (no meu caso "p").
Se você prefere o shadowing, em vez disso marque a opção [X] Qualify all generated field accesses with "this."
Como eu disse, acho que isso é questão de gosto (e de padrão dentro do seu projeto), então fiquem à vontade para fazerem do jeito que vocês quiserem.
Uma coisa que acho que ajuda muito é usar "final" em parâmetros (use com critério :P) ; isso ajuda a pegar alguns bugs estúpidos, como este:
Usando o "final" esse erro é acusado pelo compilador.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 31/08/2007 11:21:59
|
rdgc
JavaGuru
Membro desde: 09/05/2006 17:34:17
Mensagens: 209
Localização: São Paulo - SP
Offline
|
thingol wrote:No Eclipse 3.2 você pode fazer: Project, Java Code Style, [X] Enable project specific settings, em Parameters edite "Prefix List" para o que você quiser (no meu caso "p").
Se você prefere o shadowing, em vez disso marque a opção [X] Qualify all generated field accesses with "this."
Como eu disse, acho que isso é questão de gosto (e de padrão dentro do seu projeto), então fiquem à vontade para fazerem do jeito que vocês quiserem.
Uma coisa que acho que ajuda muito é usar "final" em parâmetros (use com critério :P) ; isso ajuda a pegar alguns bugs estúpidos, como este:
Usando o "final" esse erro é acusado pelo compilador.
Eu tbm uso sempre o 'final' nos métodos. Vc configurou para iserir isso automático ou faz na mão mesmo?
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 31/08/2007 11:42:12
|
GiancarloBraga
Java Ninja
![[Avatar]](/images/avatar/60a77e068efeffff1391d72e4fbfec5c.jpg)
Membro desde: 25/06/2007 06:00:00
Mensagens: 261
Offline
|
Eu não acho que seja uma má prática, uma vez que existe o this para evitar problemas.
|
-------------------------
Visitem meu novo Java Blog para iniciantes:
http://giancarlobraga.joolo.com/
 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 31/08/2007 12:20:24
|
leonardom
Virtual Machine Man
![[Avatar]](/images/avatar/7f5d04d189dfb634e6a85bb9d9adf21e.jpg)
Membro desde: 23/02/2003 11:41:23
Mensagens: 679
Localização: Anywhere
Offline
|
GiancarloBraga wrote:Eu não acho que seja uma má prática, uma vez que existe o this para evitar problemas.
Concordo. No mínimo o cara (desenvolvedor) tem que conhecer a linguagem que está trabalhando.
|
"If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas."
George Bernard Shaw (1856 - 1950) - Irish dramatist - Nobel Prize of Literature, 1925
blog: http://leonardom.wordpress.com
http://www.insidecode.com.br
|
|
|
 |
|
|