Upload
joao-victor-campelo-antunes
View
216
Download
1
Embed Size (px)
Citation preview
REFATORAÇÃO
JOÃO LACERDADJALMA LIMA
MARTIN FOWLER
É um autor conhecido na área de arquitetura de software, especializado em análise orientada a objetos, UML, padrão de projeto de software e metodologias de desenvolvimento ágil de software, incluindo Programação extrema (XP). Ele começou a trabalhar com desenvolvimento de software no início dos anos 80 e escreveu vários livros populares sobre desenvolvimento, alguns deles já traduzidos para português.
LIVROS
Padrões de Arquitetura de Aplicações Corporativas, Ed. Bookman, 2006
Refatoração: Aperfeiçoando o projeto de código existente, Ed. Bookman, 2004
UML Essencial,Ed. Bookman, 2004
DEFINIÇÃO
“Refatoração é uma técnica disciplinada para reestruturar um código fonte existente, alterando sua estrutura interna sem mudar o seu comportamento externo. Sua essência está em uma série de pequenas transformações que preservam comportamento. Cada transformação (chamada de refatoração) faz pouca coisa, mas uma sequência de pequenas transformações produz uma reestruturação significativa. Uma vez que cada refatoração é pequena, é mais improvável que algo dê errado. O sistema se mantém funcionando integralmente após cada refatoração, reduzindo as chances de o sistema sofrer um dano grave durante a reestruturação”.(Martin Fowler,2004).
MANTENDO A CASA EM ORDEM
OBJETIVO
O objetivo de refatorar um código freqüentemente é manter o custo de manutenção constante ao longo do tempo.
TEMPO x GASTO Estima-se que cerca de 50% do tempo de
um engenheiro de Software é gasto com tarefas de manutenção e compreensão de código.
Fonte: Maia (2004)
CUSTOS x GASTOS Ao longo das últimas três décadas mais
de 60% dos custos de desenvolvimento de Software das organizações foram gastos com manutenção.
Fonte: Maia (2004)
MOTIVAÇÕES
Simplicidade Flexibilidade Clareza Desempenho Facilitar a manutenção Reduzir custos
UTILIZAÇÃO
A refatoração deve ser utilizada quando o "código cheirar mal"(bad smells in code).(Kent Beck, um dos fundadores da Programação Extrema.)
UTILIZAÇÃO
Alguns indícios já possuem uma aceitação ampla para promover refatoração:
Código duplicado (duplicated code) Método longo (long method) Classe grande (large class) Lista de parâmetros longa (long parameter list) Má indentação(Bad Indentation)
ANTES
<<extends>>
CONTROLADOR
EFERTUAR CONTROLE
DE TRÁFEGO
GERENCIARROTAS E TRENS
•Cadastrar•Consultar•Remover•Monitorar
•Alterar
DEPOIS
CONTROLADOR
EFETUAR CONTROLE DE
TRÁFEGO
CADASTRAR ROTAS E TRENS
CONSULTAR ROTAS E TRENS
REMOVER ROTAS E TRENS
ALTERAR ROTAS E TRENS
MONITORAR ROTAS E TRENS
ANTES
TREM
+ Tipo: String+ Rota: String+Quant. Passageiros: Int+ Tipo de carga: String+ Quant. Carga: String+ Periculosidade: String
- Cadastrar ()- Consultar ()- Remover ()- Monitorar ()- Alterar()
DEPOIS
TREM+ Tipo: String+ Rota: String
-Cadastrar ()- Consultar ()- Remover ()- Monitorar ()- Alterar ()
PASSAGEIRO+ Quantidade: String
CARGA+ Tipo: String+ Quantidade: Double+ Periculosidade: String
ANTES/** Salva o produto no banco de dados. */ public void save()
{ // Verifica propriedades if ( this.getName() == null ){
throw new Exception("Falta nome"); } else if (this.getDescription() == null ) {
throw new Exception("Falta a descrição"); } this.getDatabase().save(this);
}
DEPOIS/** Salva o produto no banco de dados. */ public void save() {
this.checkProperties(); this.getDatabase().save(this);
} /** Verifica as propriedades do produto. */ public void checkProperties() {
if (this.getName() == null) { throw new Exception("Falta nome do produto."); } else if (this.getDescription() == null) { throw new Exception("Falta a descrição do produto."); }
}
FERRAMENTAS
XRefactoring: C e Java.
RefactorIT: Integrada em várias IDEs.
JFactor: Java
REFERÊNCIAS MAIA, P. H. REFAX:Um arcabouço para
desenvolvimento de ferramamentas de refatoração baseado XML. Programa de Pós Graduação em Ciência da Computação . Ceará, Fortaleza: UFC,2004.
FOWLER, M. Refatoração Aperfeiçando o Projeto de Código Existente (1ª Edição ed.). (A. Fernandes, Trad.) Porto Alegre - RS:Bookman,2004.