Início > Qualidade de Código > Parâmetros de Funções

Parâmetros de Funções

Série de Maclaurin

O número ideal de parâmetros de uma função é zero. Grandes quantidades de parâmetros tornam mais difícil a manutenção do código. Por isso, caso parâmetros sejam realmente necessários, a melhor escolha é evitar uma quantidade maior que dois.

Devem ser evitados também parâmetros booleanos que modificam o comportamento da função. Por exemplo, no código abaixo a função “DebitarJuros” recebe um parâmetro que indica se o Juros aplicado é Especial:

public void DebitarJuros(bool jurosEspecial)
{
    if(jurosEspecial)
    {
        this.Saldo -= JUROS_ESPECIAL;
    }
    else
    {
       this.Saldo -= JUROS_COMUM;
    }
}

Nesse caso, a maneira mais adequada seria criar dois métodos, um para cada tipo de Juros. Dessa forma, eliminamos o parâmetro e deixamos o código mais fácil de entender. Mesmo sem ver a implementação dos métodos, claramente percebemos que eles aplicam juros diferentes:

public void DebitarJurosEspecial() {...}

public void DebitarJurosComum() {...}

Em geral, quando uma função tem mais de três parâmetros é possível agrupá-los em uma classe, tornando-a mais fácil de ser ententida e alterada:

public void InsereUsuarioNoBancoDeDados(string nome, string login, string senha, DateTime dataNascimento)
{...}

public void AtualizaUsuarioNoBancoDeDados(int id, string nome, string login, string senha, DateTime dataNascimento)
{...}

Os métodos acima recebem as informações a respeito de um usuário para que possam ser inseridas ou atualizadas no Banco de Dados. Note que se, devido a alguma alteração no Banco de Dados, for necessário adicionar mais uma informação sobre o usuário (como o estado civil, por exemplo) precisaremos alterar os dois métodos, adicionando mais um parâmetro:


public void InsereUsuarioNoBancoDeDados(string nome, string login, string senha, DateTime dataNascimento, string estadoCivil)
{...}

public void AtualizaUsuarioNoBancoDeDados(int id, string nome, string login, string senha, DateTime dataNascimento, string estadocivil)
{...}

Note que se agruparmos as informações de um usuário em uma classe, qualquer alteração nessas informações afetará apenas essa classe.

public class Usuario
{
public string Nome { get; set; }
public string Login { get; set; }
public string Senha { get; set; }
public DateTime DataNascimento { get; set; }
}

E os métodos receberão um objeto Usuário como parâmetro:

public void InsereUsuarioNoBancoDeDados(Usuario usuario)
{...}

public void AtualizaUsuarioNoBancoDeDados(Usuario usuario)
{...}

Como vimos, diminuir o número de parâmetro em nossas funções além de deixar o código mais fácil de ser entendido, ajuda quando ocorrerem modificações, tornado mais simples a refatoração.

Anúncios
  1. Nenhum comentário ainda.
  1. No trackbacks yet.

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s

%d blogueiros gostam disto: