Logotipo do ConstructiCat
CodeBust.
Explorar a seção ▾

Método Longo.

Um método contém linhas de código demais. Em geral, qualquer método com mais de dez linhas deve começar a levantar suspeitas.

##Sinais e sintomas

Um método contém linhas de código demais. Em geral, qualquer método com mais de dez linhas deve começar a levantar suspeitas.

void checkout(Order order) {
  double total = 0;
  for (Item item : order.items) {
    double line = item.price * item.qty;
    if (item.qty > 10) line *= 0.9;
    total += line;
  }
  if (order.coupon != null) total -= order.coupon.discount;
  charge(order, tax(total));
  ship(order);
  email(order);
  log(order);
}

##Causas do problema

Como no Hotel California, sempre se acrescenta algo a um método, mas nunca se retira nada. Como é mais fácil escrever código do que lê-lo, esse “smell” passa despercebido até que o método se transforme em uma fera feia e descomunal.

Mentalmente, muitas vezes é mais difícil criar um novo método do que adicionar a um já existente: “Mas são só duas linhas, não faz sentido criar um método inteiro só para isso...” O que significa que mais uma linha é adicionada e depois outra, dando origem a um emaranhado de código espaguete.

##Tratamento

##Benefícios

  • Entre todos os tipos de código orientado a objetos, as classes com métodos curtos são as que sobrevivem por mais tempo. Quanto mais longo for um método ou função, mais difícil se torna entendê-lo e mantê-lo.

  • Além disso, métodos longos oferecem o esconderijo perfeito para código duplicado indesejado.

##Desempenho

Será que aumentar o número de métodos prejudica o desempenho, como muitos afirmam? Em quase todos os casos, o impacto é tão insignificante que nem vale a pena se preocupar com ele.

Além do mais, agora que você tem um código claro e compreensível, é mais provável que encontre formas realmente eficazes de reestruturar o código e obter ganhos reais de desempenho, caso isso venha a ser necessário.