Refatoração: Melhorando código existente AgilCoop – Cursos de Verão 2010 Mariana Bravo IME/USP.

Slides:



Advertisements
Apresentações semelhantes
INFO CONGRESS.
Advertisements

Refatorações Experiência é aquela coisa maravilhosa que permite que você reconheça um erro tão logo o cometa novamente F.P. Jones.
Extreme Programming Walfredo Cirne Universidade Federal da Paraíba.
Test Driven Development Nazareno Andrade Baseado no material do prof. Hyggo Almeida.
1 Test Driven Development John Jonathan da Silva /
UTFPR – Campus Curitiba - DAELN Cursos de Eng. Eletrônica/Eng
Implementação TCP Francisco Krahe Luis Brandelli.
1 Refatoração: Melhorando a Qualidade de Código Pré-Existente Prof. Dr. Fabio Kon Departamento de Ciência da Computação IME / USP JIM ’ São Lu í.
Desenvolvendo Software com Qualidade e Agilidade Prof. Dr. Fabio Kon Departamento de Ciência da Computação IME - USP
Banco de Dados Ágeis e Refatoração SC1: Métodos Ágeis de Desenvolvimento de Software Danilo Sato & João Eduardo Ferreira IV Experimental.
REFATORAÇÃO JOÃO LACERDA DJALMA LIMA. MARTIN FOWLER É um autor conhecido na área de arquitetura de software, especializado em análise orientada a objetos,
TÉCNICO EM INFORMÁTICA Linguagem e Técnica de Programação III PROF. MARCELO N. SANTOS
PROGRAMAÇÃO ORIENTADA A OBJETOS EM C++ Professor: Dilvan Moreira.
Testes de Interface de Usuário AgilCoop – Cursos de Verão 2010 Mariana Bravo IME/USP.
Desenvolvimento Dirigido por Testes (TDD) Cursos de Verão Hugo Corbucci.
Desenvolvimento Dirigido por Testes (TDD) Cursos de Verão Mariana Bravo.
Estratégias de Escrita de Testes Automatizados Paulo Cheque Cursos de Verão 2010 Licença: Creative.
Introdução a Testes Automatizados AgilCoop – Cursos de Verão 2010 Mariana Bravo IME/USP.
Padrões de Testes Automatizados Curso de Verão IME/USP Hugo Corbucci
Modelagem Orientada a Objetos com UML Cursos para a CTI - IME/USP Dairton Bassi, Hugo Corbucci e Mariana Bravo Departamento de Ciência.
Desenvolvimento de Software de Qualidade através de Testes Automatizados Paulo Cheque Cursos de.
Testes Automatizados Cursos de Verão 2007 – IME/USP Dairton Bassi & Paulo Cheque.
CARTÕES CRC. O começo ● Ward Cunningham e Kent Back contratados pela Tektronix para um projeto de pesquisa.
Introdução a Testes Automatizados Cursos de Verão 2008 – IME/USP Paulo Cheque.
Modelagem Orientada a Objetos com UML Cursos para a CTI - IME/USP Dairton Bassi, Hugo Corbucci e Mariana Bravo Departamento de Ciência.
1 Aula 06 – Funções Prof. Filipe Mutz Colocar mais exemplos de funções simples no começo.
07/06/ João Paulo Pizani Flor ( Síntese comportamental de componentes de um Sistema Operacional em hardware João Paulo Pizani.
Tracking – Acompanhamento de Projetos Ágeis Curso de Verão 2007 – IME/USP Danilo Sato & Mariana Bravo.
Código Limpo Curso de Verão IME/USP Hugo Corbucci.
Programação Extrema e outras práticas para elaboração de software Hugo Corbucci AgilCoop DCC - IME - USP
Modelagem Orientada a Objetos com UML Cursos para a CTI - IME/USP Dairton Bassi, Hugo Corbucci e Mariana Bravo Departamento de Ciência.
Refatoração: Melhorando a Qualidade de Código Pré-Existente Cursos de Verão 2008 – IME/USP Mariana Bravo & Hugo Corbucci.
Introdução à Programação eXtrema (XP) Cursos de Verão IME/USP Mariana Bravo e Hugo Corbucci Departamento de Ciência da Computação.
Objetos Dublês AgilCoop – Cursos de Verão 2010 Mariana Bravo IME/USP.
Testes de Unidade Curso de Verão IME/USP Hugo Corbucci
Dicas para a apresentação – -Use quantos slides você achar conveniente para explicar seu trabalho; -Nos próximos slides segue uma sugestão de roteiro para.
Engenharia de Software Definição: Estabelecimento e uso de sólidos princípios de engenharia para que se possa obter economicamente um software que seja.
Administração de Empresas
Desenvolvimento Dirigido por Testes (TDD)
Olá sou Willian Marques, natural de Minas Gerais que atualmente mora na cidade São Paulo. Programador.
Disciplina: Sistemas de Informação
Soluções de alta disponibilidade em banco de dados
Métodos Formais em Engenharia de Software Utilização da Ferramenta VDMTools Lite João Pascoal Faria
Programação Orientada a Objetos
Plano de liberação do Software UNI MAPS
Métodos Formais em Engenharia de Software Utilização da Ferramenta VDMTools Lite João Pascoal Faria
TQS - Teste e Qualidade de Software (Software Testing and Quality) Introdução a testes unitários automatizados com JUnit.
Módulo I Capítulo 2: IDE e Variáveis
3.1 Classes e Objetos Em um programa orientado a objetos normalmente existem vários objetos de um mesmo tipo. Por exemplo, um programa de controle de.
Desenvolvimento Dirigido por Testes / Testes a Priori
INTRODUÇÃO AO CONTROLE ESTATÍSTICO
Singleton e Template Method
REFATORAÇÃO ASPECTOS BÁSICOS.
Refatoração: Melhorando a Qualidade de Código Pré-Existente
Workshop Agile tdd - Test Driven development
Aula 5 Projeto Olimpíada.
Modelagem Orientada a Objetos com UML
Giales Fischer Grützmann
Desenvolvimento de Software de Qualidade através de Testes Automatizados 09/02/2009 Verão h.
Linguagem de Programação
3.2 Sobrecarga de Métodos (Overloading)
Programação Orientada a Objetos
Prof.: Bruno Rafael de Oliveira Rodrigues
Curso básico de PHP. 1 Vantagens: Gratuito Multiplataforma Estável Rapidez Comunicação.
Hierarquia de memória Memória Interna. Memória A.W. Burks, H.H. Goldstine e J. von Neumann Preliminary Discussion of the Logical Design of na Eletronic.
Leonardo M G Gallardo Trilha: Testes
Padrões de Projeto.
(i)responsáveis Décio Moreno Kelver Merlotti Matheus Hunsche
Presbiopia.
Autores: Nome 1; Nome 2; Nome 3 INSTITUIÇÃO / CIDADE - ESTADO
Transcrição da apresentação:

Refatoração: Melhorando código existente AgilCoop – Cursos de Verão 2010 Mariana Bravo IME/USP

Copyleft AgilCoop 2010 Refatoração ● Uma mudança no sistema que não altera seu comportamento funcional, mas melhora sua estrutura interna ● Limpa o código, minimizando as chances de introduzir erros ● Melhora o design depois que o código foi escrito

Copyleft AgilCoop 2010 De onde vem? ● Surgiu na comunidade Smalltalk nos anos ~90 ● Desenvolveu-se formalmente na Universidade de Illinois em Urbana-Champaign ● Grupo do Prof. Ralph Johnson – Tese de PhD de William Opdyke (1992) – John Brant e Don Roberts: The Refactoring Browser Tool ● Kent Beck e Martin Fowler na indústria

Copyleft AgilCoop 2010 O espírito da refatoração

Copyleft AgilCoop 2010 O espírito da refatoração Refatoração

Copyleft AgilCoop 2010 O espírito da refatoração Refatoração

Copyleft AgilCoop 2010 Primeiro passo: Testes ● Conjunto sólido de testes garante que o comportamento não será alterado ● Refatorações podem adicionar erros – Porém, como são feitas em pequenos passos, é fácil recuperar-se de uma falha ● Testes devem ser automatizados e verificarem o próprio resultado

Copyleft AgilCoop 2010 Exemplos

Copyleft AgilCoop 2010 Extrair método ● Transforma um fragmento de código em um método com um nome explicativo ● Motivação: – Facilitar o entendimento de trecho de código – Aumentar as chances de reutilização do novo método

Copyleft AgilCoop 2010 Renomear variável ● Muda o nome de uma variável para expressar melhor o seu propósito ● Motivação: – Facilitar o entendimento do papel da variável em seu escopo

Copyleft AgilCoop 2010 Dinâmica da refatoração ● Cada mudança é simples... ● Mas seu efeito acumulado pode melhorar muito o design do código ● É construindo o sistema que podemos descobrir como melhorá-lo

Copyleft AgilCoop 2010 Refatorar para... ● Melhorar o design do software ● Facilitar o entendimento do software ● Encontrar falhas mais facilmente ● Programar mais rapidamente

Copyleft AgilCoop 2010 Quando refatorar ● Sempre que você precisar fazer algo e o código atrapalhar mais do que ajudar: – Quando adiciona funcionalidade – Quando corrige um erro – Quando revisa o código – Na terceira cópia, refatore (ou na primeira!) ● Quando o código cheira mau – “If it stinks, change it.” (Se feder, troque-o.) Vó de Beck, sobre como cuidar de bebês

Copyleft AgilCoop 2010 Alguns maus cheiros ● Nomes de variáveis obscuros ● Código duplicado ● Método muito longo ● Classe muito grande ● Intimidade inapropriada ● Comentários ● Muitos parâmetros

Copyleft AgilCoop 2010 Maus cheiros em testes ● Problemas no código: – Testes obscuros – Presença de condições – Replicação de código – Lógica de testes em produção ● Problemas no comportamento: – Testes frágeis – Testes lentos – Intervenções manuais

Copyleft AgilCoop 2010 Exemplos

Copyleft AgilCoop 2010 Mover método ● Move um método que utiliza mais funcionalidades de outra classe do que aquela em que se encontra ● Motivação: – Uma classe tem muitos comportamentos – O acoplamento entre classes é muito forte ● O velho método delega ou é removido

Copyleft AgilCoop 2010 Usando ferramentas

Copyleft AgilCoop 2010 Substituir temporário por chamada ● Substitui o uso de uma variável por uma chamada a um método que realiza as operações ● Motivação: – Variáveis temporárias incentivam seu uso prolongado por terem um escopo limitado

Copyleft AgilCoop 2010 Mais um exemplo

Copyleft AgilCoop 2010 E o desempenho? “Devemos esquecer as pequenas eficiências em 97% do tempo: otimização prematura é a raiz de todo o mal.” Donald Knuth ● Usar profiling para encontrar gargalos ● Otimizar apenas os gargalos ● Código fatorado: – Compra tempo para otimizar – Aumenta a precisão na otimização

Copyleft AgilCoop 2010 Dois chapéus ● Refatoração ● Nova funcionalidade ● Correção de erros

Copyleft AgilCoop 2010 Mais exemplos: sugestões?

Copyleft AgilCoop 2010 Problemas com refatorações ● Refatoração de sistemas grandes ou enormes ● Refatoração com bancos de dados ● Refatoração de APIs públicas ● Quando não refatorar? – Quando é tão ruim que reescrever é melhor – Quando você está próximo de um prazo

Copyleft AgilCoop 2010 Dúvidas? Mariana Bravo

Copyleft AgilCoop 2010 Referências ● M. Fowler, “Refactoring, Improving the design of existing code”, Addison-Wesley Professional, 1999 ● J. Kerievsky, “Refactoring to Patterns”, Addison-Wesley Professional, 2004 ● S. Ambler, P. Sadalage, “Refactoring Databases: Evolutionary Database Design”, Addison-Wesley Professional, 2006 ●