Dúvida - Diferença entre variável local e parâmetros?

5 respostas
R

Pessoal, estou com uma dúvida básica...

Qual a diferença dos seguintes códigos?

public void Busca(String nome, Integer idade){
.
.
.
}
public void Busca(){
String nome;
Integer idade;
.
.
.
}

Qual seria a maneira correta de usar?

5 Respostas

kenneth

Bom,

Parametros sao informacoes que vc pode passar para o metodo, e
que podem influenciar no seu comportamento…

A diferenca aqui seria na hora de chamar a funcao…

Se vc declara busca(String nome), pode filtrar resultados baseados
no parametro…

... busca(String nome){
... select WHERE tabela.nome ILIKE nome ...
}

Ai ja nao serviria com variaveis locais…

Entendeu mais ou menos?

luciano2

Tem mais,

Se seu parametro for um objeto você na verdade recebeu uma referencia para a posição na memória onde o objeto está.

Isso quer dizer que quando você for alterar o objeto vai estar alterando o objeto na classe que chamou o seu método. Deu para entender?

Isso não acontece quando seu parâmetro é primitivo, pois o mesmo não é passado por referência.

nel

No caso do primitivo, a maior questão é que não se trata de um Object.

A maneira correta neste caso, no meu ponto de vista, tem total relação com a sua necessidade.
Um exemplo, seria se você precisa de uma variavél apenas para executar algo dentro do seu método, sem que a mesma precise ser passada por parametro.

Vamos supor que você crie um método soma para dois valores, assim, você não precisa a principio enviar um terceiro parametro, concorda? Algo assim:
Integer soma(Integer a, Integer b) {
    return a + b;
}
Ou:
Integer soma(Integer a, Integer b) {
    Integer result = a + b;

    return result;
}

Neste caso, por exemplo, você não precisa enviar o parametro result no método, já que isto não se faz necessário.
Espero ter ajudado.

Abraços.

Hebert_Coelho

A maneira correta vc decide. Vc pode usar dos dois modos.

No caso, se realmente vc estiver tentando fazer uma busca, seu método terá que receber os parâmetros:

public void busca(String nome, Integer idade){

.
.
.
}
A diferença maior entre busca() e busca(nome, idade) está na hora de chamar. Se sua classe controladora for chamar esses métodos teria que ser
classeDeBusca.busca();
// ou
classeDeBusca.busca(nome, idade);

Uma boa dica é:
Nome de métodos começarem com letra minúscula, ao invés de Busca, utilize buscar.
E também devem indicar ações! ;)

Dá uma olhada nos links da minha assinatura sobre código limpo, vai te ajudar! [=

nel

Bem comentado e percebido, nem havia notado que ele havia iniciado o nome do método letra minuscula.
E adicionando, classes e interfaces, com letras maisculas hein.

Abraços!

Criado 5 de agosto de 2010
Ultima resposta 6 de ago. de 2010
Respostas 5
Participantes 5