Exemplos de Refactoring Alguns exemplos e considerações sobre Refactoring.

Slides:



Advertisements
Apresentações semelhantes
JAVA Orientação a Objetos
Advertisements

Programação em Java Prof. Maurício Braga
I/O Carlos Bazilio Depto de Ciência e Tecnologia
Soluções Iterativas com Laços
Programação em Java Prof. Maurício Braga
Classes Abstratas e Interfaces
Reflexão Marco Antonio Arquiteto de Software Novembro/2007.
Sockets Marco Antonio – marcoreis.net Arquiteto de Software Dezembro/2007.
Modificadores Marco Antonio, Arquiteto de Software – TJDF Atualizado em Novembro/2008.
Utilitários Marco Antonio. Enum Como o nome sugere, é uma enumeração de opções para uma determinada situação A principal vantagem é limitar as opções.
Entrada e Saída Marco Antonio Arquiteto de Software Dezembro/2007.
Tratamento de Exceções
Prof. Thiago Pereira Rique
Chain of Responsibility
Padrão de Projeto Interpreter
Orientação a Objetos: Modificador Final para Métodos e Classes
Herança, sobrecarga e ligação dinâmica zHerança zReferência super zSobrecarga de métodos zSobreposição zLigação dinâmica de métodos zfinal.
Singleton.
Métodos Programação II 1 Métodos de Programação II (Mestrado Integrado em Engenharia de Comunicações) 1º Ano, 2º Semestre Elementos de Classe, class wrappers.
Estrutura de Dados em Java
Paradigmas de Linguagens de Programação Paradima da Programação Orientada à Objetos Professor: Armando Hage Belém-2008.
O Mecanismo de Threads em Java 2. Criar uma classe herdeira da super classe Thread public class minhaThread extends Thread{ public class minhaThread extends.
Programação Orientada a Objetos com Java
Professor: Hyggo Almeida
Threads, Gerenciamento de Threads Pool de Threads, Grupo de Threads Variáveis Locais à Threads.
JAVA Orientação a Objetos
Interfaces.
Atributos, Encapsulamento e Interface em Java
Programação I Aula 2 (Métodos)
Linguagem técnica de programação I Java
Entendendo as definições de classe
Chamada Remota de Procedimentos
1 Mobilidade de Código com μcode Projeto Giga Alexandre Lages
Paulo Henrique MSc. Ciência da Computação – UFC
Paulo Borba Centro de Informática Universidade Federal de Pernambuco Classes Abstratas e Interfaces.
Orientação a Objetos e Java Graduação em Ciência da Computação
Paulo Borba Centro de Informática Universidade Federal de Pernambuco
Curso de Aprendizado Industrial Desenvolvedor WEB Disciplina: Programação Orientada a Objetos I Professora: Cheli Mendes Costa This.
POO - I Prof.: Jean Carlo Mendes
Linguagem II Exceções.
Listas Simplesmente Encadeadas
Programação Orientada a Objetos - Java
Implementação Orientada a Objetos – Aula 03
Tratamento de Exceções
Programação Orientada a Objetos - Java Professor: Jean Carlo Mendes.
Programação Orientada a Objetos - Java
Orientação a Objetos e Java Graduação em Ciência da Computação  Centro de Informática, UFPE Alexandre Mota
Java Kickstart, day 2 Semelhanças com linguagem C.
Aula Prática 4 Monitoria IP/CC (~if669).
Implementação Orientada a Objetos – Aula 05 Construtores e sobrecarga de métodos Prof. Danielle Martin Universidade de Mogi das Cruzes
Polimorfismo.
Capítulo 6 Exceções.
Coleções, Genéricos, Threads Marco Antonio. Collection Principais métodos da interface Collection.
Programação para Web Unidade 06 – Java Beans e BDs Prof.: Henrique Santos.
Estrutura de Controle em JAVA
Exceções Suzana Fragoso (smpf) Adaptado do material de Guilherme Carvalho (gvc)
Exceções Profa. Patrícia A. Jaques Alterada por Leandro Tonietto abr-15.
Programação II Prof. Mateus Raeder Universidade do Vale do Rio dos Sinos - São Leopoldo -
Programação II Prof. Mateus Raeder Universidade do Vale do Rio dos Sinos - São Leopoldo -
Aula Prática 5 05/05/2010. //Estrutura do método public int subtrair (int a, int b){ //Calcule a operação desejada. int resultado = a – b; //Retorne o.
Java Conexão com Baco de dados Saulo Bazzi Oberderfer Fonte:
Copyright 1998, Departamento de Informática da UFPE. Todos os direitos reservados sob a legislação em vigor. Variáveis e métodos estáticos, Passagem de.
Socket em Java.
1 Design Pattern Double Checked Locking. 2 Design Pattern Apresenta soluções para problemas que ocorrem repetidamente em nosso ambiente computacional.
Paulo Borba Centro de Informática Universidade Federal de Pernambuco Exceções.
Aprendendo como funciona o NHibernate Elvis Medeiros Programador .NET
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,
Linguagem Java Programação II.
IDENTIFICAÇÃO DOS RELACIONAMENTOS Nesta atividade devem ser definidos os relacionamentos entre as classes Podem ser representados pela: – associação, –
Transcrição da apresentação:

Exemplos de Refactoring Alguns exemplos e considerações sobre Refactoring

Sumário O que e é Refactoring Quando usar Quando não usar Custos Exemplos

Mas o que é Refactoring mesmo? Técnica sistemática para reestruturação interna de sistemas: – altera as estruturas internas sem modificar as estruturas externas do sistema – É constituído de pequenos passos (refatorações) que isoladamente mudam pouco, mas que em conjunto podem produzir reestruturação significativa. – Após uma refatoração o sistema deve estar em perfeito funcionamento, o risco de instabilidade crítica inserido pela reestruturação deve ser mínimo.

Quando devo usar Refactoring? Em XP Em outros processos de desenvolvimento Em sistemas legados

Quando devo usar Refactoring? Em XP Em outros processos de desenvolvimento ou seja, Refactoring é indispensável!

Quando não usar Refactoring Sistema muito ruim: talvez seja melhor refazer o sistema Prazo muito curto: melhor refatorar depois

Mas tudo tem um custo... Sólida estrutura de testes automatizados Atualização da documentação Atualização dos testes

Exemplos – Extract Method void printDebit(double amount) { printBanner(); // print details System.out.println(name:+ _name); System.out.println(amount + amount); } void printDebit(String name, double amount) { printBanner(); printDetails(amount); } void printDetails(double amount) { System.out.println(name:+ _name); System.out.println(amount + amount); }

Exemplos – Singleton public String getNomeCliente(int id){ try{ BancoDados banco = new BancoDados(); String nomeCliente = banco.getNomeCliente(); }catch(Exception e){//...tratamento de exceção} } public String getNomeCliente(int id){ try{ BancoDados banco = BancoDados.getInstance(); return banco.getNomeCliente(); }catch(Exception e){//...tratamento de exceção} }

Exemplos – Singleton (ii) public static BancoDados getInstance(){ return (bancoDados == null) ? new BancoDados() : bancoDados; } private BancoDados(){ //inicializa objeto //cria conexao, etc }

Exemplos – Chain Constructors

Exemplos – Chain Constructors (ii)

Por fim... Antipatterns renomear variáveis, indendação, também são refactoring AOP