Named Parameters

4 respostas
danieldestro

Um amigo me deu a dica deste artigo: http://weblogs.java.net/blog/brucechapman/archive/2008/09/named_parameter_1.html

O autor, Bruce Chapman, comenta que muitas vezes tem de usar métodos onde os argumentos têm o mesmo tipo, o que o confundem na hora de chamá-los.

Exemplo:

public void armazenar( int codigo, int valor, int passo ) { /* faz algo */ }

Chamando:

armazenar( 10, 20, 30 ); armazenar( 11, 21, 31 ); armazenar( 12, 22, 32 );

E, por clareza, ele usa as características presentes da linguagem para dar mais clareza ao seu código:

int codigo, valor, passo; armazenar( codigo=10, valor=20, passo=30 ); armazenar( codigo=11, valor=21, passo=31 ); armazenar( codigo=12, valor=22, passo=32 );

Clareza? Bom, é bem discutível!!!

4 Respostas

T

Hum - isso é um buraco da linguagem que não é legal resolver assim.
Imagine se você, por descuido, faz isto aqui:

int codigo, valor, passo;  
armazenar( codigo=10, valor=20, passo=30 );  
/// muitas linhas abaixo, e sem IDE para ajudar...
armazenar( valor=21, passo=31, codigo=11 );  
/// em outra rotina...
armazenar( passo=32, codigo=12, valor=22 );

Como o Java não suporta named parameters (uma omissão muito ruim, que deve vir do tempo do Fortran e do Cobol :stuck_out_tongue: ) então esse quebra-galho acaba mais causando mal que bem.

Em uma linguagem qualquer que tenha esse recurso de “named parameters” você pode pô-los fora de ordem que não há problemas. A principal linguagem onde os “named parameters” existem e são fundamentais é a Smalltalk:

ramilani12

E bem semelhante ao Groovy:

class A
{
  String a , b , c

}


new A(a:"a",b:"v",c:"c")
fabim

Nao seria claro o suficiente apenas olhar a documentacao do metodo, apos digitar o pronto (.) ?

peczenyj

Acho Named Parameters algo interessante, ainda mais se alguns desses pudessem ser definidos como constantes caso não fossem passados, da mesma forma que é com Python, por exemplo.

Criado 3 de outubro de 2008
Ultima resposta 3 de out. de 2008
Respostas 4
Participantes 5