Exemplos de Refactoring Alguns exemplos e consideraes sobre
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 print. Debit(double amount) { print. Banner(); // print details System. out. println(“name: ”+ _name); System. out. println(“amount” + amount); } void print. Debit(String name, double amount) { print. Banner(); print. Details(amount); } void print. Details(double amount) { System. out. println(“name: ”+ _name); System. out. println(“amount” + amount); }
Exemplos – Singleton public String get. Nome. Cliente(int id){ try{ Banco. Dados banco = new Banco. Dados(); String nome. Cliente = banco. get. Nome. Cliente(); }catch(Exception e){//. . . tratamento de exceção} } public String get. Nome. Cliente(int id){ try{ Banco. Dados banco = Banco. Dados. get. Instance(); return banco. get. Nome. Cliente(); }catch(Exception e){//. . . tratamento de exceção} }
Exemplos – Singleton (ii) public static Banco. Dados get. Instance(){ return (banco. Dados == null) ? new Banco. Dados() : banco. Dados; } private Banco. Dados(){ //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
- Slides: 13