SlideShare una empresa de Scribd logo
1 de 9
Princípio DRY
 1   Don’t Repeat Yourself (Nunca Repita Você Mesmo)


     Princípio criado por Andy Hunt e Dave Thomas documentado no livro
 2
     “The Pragmatic Programmer” de 1.999

     Principal finalidade é reduzir a duplicação de informações no sistema
 3
     (Documentação, Código, Testes, Banco de Dados)

     Informações duplicadas devem ser refatoradas
 4
     (Remover todas as linhas de código duplicadas)


 5   Deve ser aplicado a medida que colocamos novas linhas de código




                                                                             2
Porque aplicar o DRY ???
 1   Evitar linhas de código duplicadas


 2   Software mais limpo e menor (linhas de código, bytes (assembly))


 3   Software flexível e de fácil manutenção


     Forçar o desenvolvedor a olhar e conhecer melhor o código antes de
 4
     implementar uma nova funcionalidade


 5   Aplicar a técnica de POO (Encapsulamento)




                                                                          3
Como aplicar o DRY ???

             Localizar Código
                Duplicado




                          Encapsular Código
        Testar
                              Duplicado




                                              4
Código .NET - SEM DRY

protected void Button1_Click(object sender, EventArgs e)
{
  ClientScript.RegisterStartupScript(typeof(Page), “inclusao”,
  “alert(„Cliente incluido com sucesso‟);”, true);
}


protected void Button2_Click(object sender, EventArgs e)
{
  ClientScript.RegisterStartupScript(typeof(Page), “alteracao”,
  “alert(„Cliente alterado com sucesso‟);”, true);
}




                                                                  5
Código .NET - COM DRY

private void ExibirMensagem(String identificador, String mensagem)
{
  ClientScript.RegisterStartupScript(typeof(Page), identificador,
  “alert(„” + mensagem + “‟);”, true);
}


protected void Button1_Click(object sender, EventArgs e)
{
  ExibirMensagem(“inclusao”, “Cliente inserido com sucesso”);
}


protected void Button2_Click(object sender, EventArgs e)
{
  ExibirMensagem(“alteracao”, “Cliente alterado com sucesso”);
}



                                                                     6
Código CSS - SEM DRY

h1 {
  color: #FF0000;
  font-family: Arial;
}

h2 {
  color: #FF0000;
  font-family: Arial;
}

h3 {
  color: #FF0000;
  font-family: Arial;
}




                        7
Código CSS - COM DRY




h1, h2, h3, h4 {
  color: #FF0000;
  font-family: Arial;
}




                        8
Princípio DRY

Más contenido relacionado

Similar a Princípio DRY

InterCon 2017 - Engenharia de segurança web: Proteja todas as camadas de seu ...
InterCon 2017 - Engenharia de segurança web: Proteja todas as camadas de seu ...InterCon 2017 - Engenharia de segurança web: Proteja todas as camadas de seu ...
InterCon 2017 - Engenharia de segurança web: Proteja todas as camadas de seu ...iMasters
 
TDC2018SP | Trilha Arq PHP - Seguranca de aplicacoes web com o uso de Boas pr...
TDC2018SP | Trilha Arq PHP - Seguranca de aplicacoes web com o uso de Boas pr...TDC2018SP | Trilha Arq PHP - Seguranca de aplicacoes web com o uso de Boas pr...
TDC2018SP | Trilha Arq PHP - Seguranca de aplicacoes web com o uso de Boas pr...tdc-globalcode
 
Demoiselle Behave - Parte 1
Demoiselle Behave - Parte 1Demoiselle Behave - Parte 1
Demoiselle Behave - Parte 1Vanderson Silva
 
Programação Orientada a Testes
Programação Orientada a TestesProgramação Orientada a Testes
Programação Orientada a TestesGregorio Melo
 
One Language to Rule Them All: TypeScript
One Language to Rule Them All: TypeScriptOne Language to Rule Them All: TypeScript
One Language to Rule Them All: TypeScriptLoiane Groner
 
Palestra criando aplicações seguras com php (2)
Palestra  criando aplicações seguras com php (2)Palestra  criando aplicações seguras com php (2)
Palestra criando aplicações seguras com php (2)Leandro Lugaresi
 
PHP Desenvolvimento Seguro
PHP Desenvolvimento SeguroPHP Desenvolvimento Seguro
PHP Desenvolvimento SeguroFlávio Lisboa
 
Vale Security Conference - 2011 - 6 - Thiago Bordini
Vale Security Conference - 2011 - 6 - Thiago BordiniVale Security Conference - 2011 - 6 - Thiago Bordini
Vale Security Conference - 2011 - 6 - Thiago BordiniVale Security Conference
 
CJR Apresenta: OWASP TOP10
CJR Apresenta: OWASP TOP10CJR Apresenta: OWASP TOP10
CJR Apresenta: OWASP TOP10CJR, UnB
 
C#4 - Parte 2 - COM interop e variância
C#4 - Parte 2 - COM interop e variânciaC#4 - Parte 2 - COM interop e variância
C#4 - Parte 2 - COM interop e variânciaGiovanni Bassi
 
AppSec Latam 2011 - Treinamento OWASP Top 10 + JavaEE
AppSec Latam 2011 - Treinamento OWASP Top 10 + JavaEEAppSec Latam 2011 - Treinamento OWASP Top 10 + JavaEE
AppSec Latam 2011 - Treinamento OWASP Top 10 + JavaEEMagno Logan
 
Negócio Escrito em Código
Negócio Escrito em CódigoNegócio Escrito em Código
Negócio Escrito em CódigoDouglas Siviotti
 
Visual Studio 2010 e C# 4
Visual Studio 2010 e C# 4Visual Studio 2010 e C# 4
Visual Studio 2010 e C# 4CDS
 
PHP like a super hero
PHP like a super heroPHP like a super hero
PHP like a super heroElton Minetto
 

Similar a Princípio DRY (20)

InterCon 2017 - Engenharia de segurança web: Proteja todas as camadas de seu ...
InterCon 2017 - Engenharia de segurança web: Proteja todas as camadas de seu ...InterCon 2017 - Engenharia de segurança web: Proteja todas as camadas de seu ...
InterCon 2017 - Engenharia de segurança web: Proteja todas as camadas de seu ...
 
TDC2018SP | Trilha Arq PHP - Seguranca de aplicacoes web com o uso de Boas pr...
TDC2018SP | Trilha Arq PHP - Seguranca de aplicacoes web com o uso de Boas pr...TDC2018SP | Trilha Arq PHP - Seguranca de aplicacoes web com o uso de Boas pr...
TDC2018SP | Trilha Arq PHP - Seguranca de aplicacoes web com o uso de Boas pr...
 
Demoiselle Behave - Parte 1
Demoiselle Behave - Parte 1Demoiselle Behave - Parte 1
Demoiselle Behave - Parte 1
 
Programação Orientada a Testes
Programação Orientada a TestesProgramação Orientada a Testes
Programação Orientada a Testes
 
One Language to Rule Them All: TypeScript
One Language to Rule Them All: TypeScriptOne Language to Rule Them All: TypeScript
One Language to Rule Them All: TypeScript
 
Palestra criando aplicações seguras com php (2)
Palestra  criando aplicações seguras com php (2)Palestra  criando aplicações seguras com php (2)
Palestra criando aplicações seguras com php (2)
 
PHP Desenvolvimento Seguro
PHP Desenvolvimento SeguroPHP Desenvolvimento Seguro
PHP Desenvolvimento Seguro
 
Python 08
Python 08Python 08
Python 08
 
Aula javascript
Aula  javascriptAula  javascript
Aula javascript
 
Pentest conisli07
Pentest conisli07Pentest conisli07
Pentest conisli07
 
Vale Security Conference - 2011 - 6 - Thiago Bordini
Vale Security Conference - 2011 - 6 - Thiago BordiniVale Security Conference - 2011 - 6 - Thiago Bordini
Vale Security Conference - 2011 - 6 - Thiago Bordini
 
CJR Apresenta: OWASP TOP10
CJR Apresenta: OWASP TOP10CJR Apresenta: OWASP TOP10
CJR Apresenta: OWASP TOP10
 
Java security
Java securityJava security
Java security
 
Testes de Segurança de Software (tech-ed 2008)
Testes de Segurança de Software (tech-ed 2008)Testes de Segurança de Software (tech-ed 2008)
Testes de Segurança de Software (tech-ed 2008)
 
C#4 - Parte 2 - COM interop e variância
C#4 - Parte 2 - COM interop e variânciaC#4 - Parte 2 - COM interop e variância
C#4 - Parte 2 - COM interop e variância
 
AppSec Latam 2011 - Treinamento OWASP Top 10 + JavaEE
AppSec Latam 2011 - Treinamento OWASP Top 10 + JavaEEAppSec Latam 2011 - Treinamento OWASP Top 10 + JavaEE
AppSec Latam 2011 - Treinamento OWASP Top 10 + JavaEE
 
Negócio Escrito em Código
Negócio Escrito em CódigoNegócio Escrito em Código
Negócio Escrito em Código
 
Visual Studio 2010 e C# 4
Visual Studio 2010 e C# 4Visual Studio 2010 e C# 4
Visual Studio 2010 e C# 4
 
PHP like a super hero
PHP like a super heroPHP like a super hero
PHP like a super hero
 
Robotium_Sikuli
Robotium_SikuliRobotium_Sikuli
Robotium_Sikuli
 

Más de Leonardo Lourenço Silva (20)

Introdução a Plataforma .NET
Introdução a Plataforma .NETIntrodução a Plataforma .NET
Introdução a Plataforma .NET
 
Resources no XAML
Resources no XAMLResources no XAML
Resources no XAML
 
Como se tornar um desenvolvedor faixa preta
Como se tornar um desenvolvedor faixa pretaComo se tornar um desenvolvedor faixa preta
Como se tornar um desenvolvedor faixa preta
 
Introdução ao WPF
Introdução ao WPFIntrodução ao WPF
Introdução ao WPF
 
Programação em Camadas - Iniciantes
Programação em Camadas - IniciantesProgramação em Camadas - Iniciantes
Programação em Camadas - Iniciantes
 
Visual F# 3.0 - Constantes, Variáveis e Classes
Visual F# 3.0 - Constantes, Variáveis e ClassesVisual F# 3.0 - Constantes, Variáveis e Classes
Visual F# 3.0 - Constantes, Variáveis e Classes
 
Introdução ao ORM
Introdução ao ORMIntrodução ao ORM
Introdução ao ORM
 
Expression Blend 5.0
Expression Blend 5.0Expression Blend 5.0
Expression Blend 5.0
 
1° Madrugada de Testes
1° Madrugada de Testes1° Madrugada de Testes
1° Madrugada de Testes
 
Mudança de Vida
Mudança de VidaMudança de Vida
Mudança de Vida
 
Evolução ASP.NET
Evolução ASP.NETEvolução ASP.NET
Evolução ASP.NET
 
Conhecendo o Windows 8
Conhecendo o Windows 8Conhecendo o Windows 8
Conhecendo o Windows 8
 
Introdução a Plataforma .NET 4.0
Introdução a Plataforma .NET 4.0Introdução a Plataforma .NET 4.0
Introdução a Plataforma .NET 4.0
 
ASP.NET Profile
ASP.NET ProfileASP.NET Profile
ASP.NET Profile
 
ASP.NET AJAX
ASP.NET AJAXASP.NET AJAX
ASP.NET AJAX
 
WCF
WCFWCF
WCF
 
Visual C# - Parâmetros Opcionais e Nomeados
Visual C# - Parâmetros Opcionais e NomeadosVisual C# - Parâmetros Opcionais e Nomeados
Visual C# - Parâmetros Opcionais e Nomeados
 
.NET - Interfaces
.NET - Interfaces.NET - Interfaces
.NET - Interfaces
 
SilverLight
SilverLightSilverLight
SilverLight
 
WPF | XBAP
WPF | XBAPWPF | XBAP
WPF | XBAP
 

Princípio DRY

  • 1.
  • 2. Princípio DRY 1 Don’t Repeat Yourself (Nunca Repita Você Mesmo) Princípio criado por Andy Hunt e Dave Thomas documentado no livro 2 “The Pragmatic Programmer” de 1.999 Principal finalidade é reduzir a duplicação de informações no sistema 3 (Documentação, Código, Testes, Banco de Dados) Informações duplicadas devem ser refatoradas 4 (Remover todas as linhas de código duplicadas) 5 Deve ser aplicado a medida que colocamos novas linhas de código 2
  • 3. Porque aplicar o DRY ??? 1 Evitar linhas de código duplicadas 2 Software mais limpo e menor (linhas de código, bytes (assembly)) 3 Software flexível e de fácil manutenção Forçar o desenvolvedor a olhar e conhecer melhor o código antes de 4 implementar uma nova funcionalidade 5 Aplicar a técnica de POO (Encapsulamento) 3
  • 4. Como aplicar o DRY ??? Localizar Código Duplicado Encapsular Código Testar Duplicado 4
  • 5. Código .NET - SEM DRY protected void Button1_Click(object sender, EventArgs e) { ClientScript.RegisterStartupScript(typeof(Page), “inclusao”, “alert(„Cliente incluido com sucesso‟);”, true); } protected void Button2_Click(object sender, EventArgs e) { ClientScript.RegisterStartupScript(typeof(Page), “alteracao”, “alert(„Cliente alterado com sucesso‟);”, true); } 5
  • 6. Código .NET - COM DRY private void ExibirMensagem(String identificador, String mensagem) { ClientScript.RegisterStartupScript(typeof(Page), identificador, “alert(„” + mensagem + “‟);”, true); } protected void Button1_Click(object sender, EventArgs e) { ExibirMensagem(“inclusao”, “Cliente inserido com sucesso”); } protected void Button2_Click(object sender, EventArgs e) { ExibirMensagem(“alteracao”, “Cliente alterado com sucesso”); } 6
  • 7. Código CSS - SEM DRY h1 { color: #FF0000; font-family: Arial; } h2 { color: #FF0000; font-family: Arial; } h3 { color: #FF0000; font-family: Arial; } 7
  • 8. Código CSS - COM DRY h1, h2, h3, h4 { color: #FF0000; font-family: Arial; } 8