Web,ruby, Ajax ou qualquer outra coisa que me venha a cabeça (com prioridade para esta última)

17 agosto, 2007

Preguiçoso ou Trabalhador


class Empregado
  def emails
    @emails ||= []
  end
end

ou


class Empregado
  def initialize
    @emails = []
  end
end

A motivação para passar a iniciar cedo atributos (ser trabalhador) é a da legibilidade do código. A mudança de valor de atributos inicados tardiamente, à lá Calvin (ver imagem não é a que queria mas não tenho scanner para a que quero e não estou para ir procurar), ocorre no seu acesso. Os atributos iniciados tardiamente podem ser problemáticos para depurar porque o seu valor muda quando se lhes acede. Os atributos iniciados cedo iniciam os seus atributos no construtor da classe.

Sem comentários: