Frankyston Lins
Frankyston Lins Desenvolvedor Ruby on Rails, gosto de games e tocar violão nas horas vagas.

O que é DRY?

O que é DRY?

Talvez você já tenho ouvido falar de cara chamado DRY. Mas o que ele realmente é?

DRY ou  Don’t Repeat Yourself é um princípio de desenvolvimento de software para reduzir a repetição de informações ou códigos. Podemos aplicar DRY de forma bastante ampla ao esquema do banco de dados, plano de teste, sistema e até mesmo documentação.

Exemplo de uma classe sem uso do DRY

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
class User < ActiveRecord::Base

  def self.all_active
    where("state = ?", "active")
  end

  def self.all_inactive
    where("state = ?", "inactive")
  end

  def active?
    self.state == 'active'
  end

  def inactive?
    self.state == 'inactive'
  end

end

Observe que no código repetimos dois métodos para fazer a chamada de de ativos ou inativos pelo mesmo campo do banco de dados state.

Exemplo de uma classe com uso do DRY

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
class User < ActiveRecord::Base

  STATES = ['active', 'inactive']

  class <<self
    STATES.each do |state_name|
      define_method "all_#{state_name}" do
        where("state = ?", state_name)
      end
    end
  end

  STATES.each do |state_name|
    define_method "#{state_name}?" do
      self.state == state_name
    end
  end

end

Como podem ver usamos o recurso da metaprogramação define_method para gerar dinamicamente os metodos all_active, all_inactive, active? e inactive?.

Tenha sempre em mente que tudo que for repetitivo no código sempre há uma maneira de usar o DRY ao seu favor.

Bom, é isso, qualquer dúvida comente abaixo.

Até o próximo post.

comments powered by Disqus