ES – 2º Apresentação Teórica. Rename Method O nome de um método não revela o seu propósito.Motivação Métodos devem ser chamados de uma forma que comuniquem.

Slides:



Advertisements
Apresentações semelhantes
Pearson Education Slide 1. Pearson Education Slide 2 Cap í tulo 11 Criado por Frederick H. Colclough, Colorado Technical University Compilação Separada.
Advertisements

Creating an Eclipse-based IDE for the D programming language
Manutenção em software Conceitos básicos
Paulo Marques Hernâni Pedroso
Redes de computadores I
Teste de Software.
Diagrama de Classes.
Orientação por Objectos > Modelo de Processo OO > Identificação de Classe e Objectos Aula 12.
Exemplo dos Internamentos
(C) 2010 Pearson Education, Inc. Todos os direitos reservados. Os programas que obtêm certos tipos de recursos devem retorná-los ao sistema explicitamente.
Projeto de Sistemas de Software(PSS) Baldoino F. dos S. Neto
Mutação de Interface Interface Mutation: An Approach for Integration Testing Marcio E. Delamaro José C. Maldonado Aditya P. Mathur.
Refatorações Experiência é aquela coisa maravilhosa que permite que você reconheça um erro tão logo o cometa novamente F.P. Jones.
Projeto de Software Orientado a Objetos
Contratos em Projeto OO
Abstract Factory Intenção: fornecer uma interface comum para a criação de famílias de objetos relacionados ou dependentes, sem especificar suas classes.
Padrões GoF – Factory Method
Políticas Curso de aprofundamento em linguagem C.
SISTEMA DE INFORMAÇÕES DESENVOLVIMENTO DE SISTEMAS
Diagrama de Classes.
Construção de Compiladores
Engenharia de Requisitos Requisito – sistema Caso de uso - usuário
TIPOS DE TESTES APLICÁVEIS E NÃO APLICÁVEIS AO PROJETO
Introdução a JDBC Eduardo Martins Guerra Instituto Tecnológico de Aeronáutica Curso de Pós-Graduação em Engenharia de Software Programação Distribuída.
Projeto da Camada de Domínio
Modelagem de Interações
Controle de Versão SVN e Tortoise SVN
Classes e objetos P. O. O. Prof. Grace.
Estrutura de Dados em Java
Diagramas de Sequência e Comunicação
Paradigmas de programação
MANUTENÇÃO DE SOFTWARE
Aula prática 13 Orientação a Objetos – C++ Parte 1
Linguagens de Programação
1 Classes Exceptions: Excepções são utilizadas normalmente em C++, mas a sua principal utilização prende-se com a construção de programas interactivos.
Programação Orientada à Objetos
Programação I Aula 2 (Métodos)
É um conjunto de registos dispostos numa estrutura regular que possibilita a reorganização dos mesmos e a produção de informação com a menor redundância.
ACESSO A BASE DE DADOS.
Prototipagem rápida de gameplay
Um Framework Para Testes
Desenvolvendo Boletim Técnico Documentação Porto Alegre, Maio 2014.
Java Bytecode Software Básico Mitsuo Takaki.
Excepções Conceito de Excepção A classe Exception
Paradigmas da Programação – Semestre 1 – Aula 10 Professor: Eduardo Mantovani )
Paradigmas de Linguagens de Programação Aula 2
Estruturas de Dados Aula 8: Tipos Abstratos de Dados 30/04/2014.
Princípios da Programação em Prolog
Tratamento de Exceções
ANÁLISE ESTRUTURADA DE SISTEMAS
Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista Linguagens de Programação Prof. Miguel Elias Mitre Campista
Testes de Software AULA 02 Eduardo Silvestri
Gestão de defeitos.
©Silberschatz, Korth and Sudarshan (modificado)4.1.1Database System Concepts Capítulo 4: SQL Estrutura básica Operações com conjuntos Funções de agregação.
Laboratório de Programação
Estruturas de Dados I Segundo Período de 2008 Gabarito da Primeira Prova.
Construtores e Destrutores
CES-10 INTRODUÇÃO À COMPUTAÇÃO
Testes de SW Aula 24.
Fluxo de Análise e Projeto 7 - Atividade Projetar Classes.
CVS – Gerenciamento de Versões
Linguagem de Programação I Parte IV
Padrões de Projetos Professora Lucélia. Conceitos É uma solução conhecida para um problema comum São técnicas que nos dão uma boa solução para determinados.
Capítulo 15 – Tratamento de Exceções
Fundamentos de Engenharia de SW Diagramas da UML Usados no Projeto de Software.
Java Como Programar, 8/E Deitel/Deitel, 8e. Java – Como programar Copyright © 2010 Pearson Education Slide 1.
Aula 10 Adeline de Sousa Tópicos desta aula:  Problemas da duplicação de código e como eliminá-la  Aliasing  Escopo de variáveis.
Testes de Unidade. 2 Pauta Testes de Unidade; Testes de Unidade; Desenvolvimento orientado a testes; Desenvolvimento orientado a testes; Testes unitários.
Laboratório de Computação Aula 06 e 07 – Implementação de classes Prof. Fábio Dias
Transcrição da apresentação:

ES – 2º Apresentação Teórica

Rename Method O nome de um método não revela o seu propósito.Motivação Métodos devem ser chamados de uma forma que comuniquem a sua intenção. O comentário para o método seria um bom nome para o método.Mecânica Declare um novo método com o novo nome. Alterar o corpo do método antigo para que ele chama o novo. Encontrar todas as referências ao método antigo e alterá-las para se referir ao novo. Remova o método antigo.

Add Parameter Um método necessita de mais informação de quem o chama.Motivação Você tem que mudar o método, e a mudança exige informações que não foi aprovada antes.Mecânica Declare um novo método com o parâmetro acrescentado. Copie o antigo corpo de código para o novo método. Alterar o corpo do método para se ajustar ao novo requesito. Encontrar todas as referências ao método antigo e alterá-las para se referir ao novo. Remova o método antigo.

Remove Parameter Um parâmetro não é usado pelo corpo do método.Motivação Ao não remover o parâmetro está a dar trabalho a quem usa o métodoMecânica Declare um novo método sem o parâmetro. Copie antigo corpo de código para o novo método. Encontrar todas as referências ao método antigo e alterá-las para se referir ao novo. Remova o método antigo.

Separate Query from Modifier Evitar a criação de métodos, que consultem e modifiquem um objecto em simultâneo.Motivação Evitar efeitos colaterais. Possibilidade de modificar o objecto quando se consulta ou obter valores diferentes dos esperados quando se modifica.Mecânica Criar Getter’s and Setter’s Separar o método em 2 métodos diferentes.

Parametrize Method Quando existem vários métodos que fazem operações semelhantes, devem ser substituídos por um único método com parâmetros de entrada.Motivação Evitar duplicações de código. Ao centralizar uma operação num método com parâmetros de entrada, reduz-se a entropia causada por eventuais mudanças.Mecânica Criar um método único. Com parâmetros de entrada.

Replace Parameter with Explicit Methods Quando existe um método que corre código diferente em função do parâmetro de entrada, então deve ser substituído por diversos métodos, um para cada troço de código.Motivação Criar operações isoladas. Ao criar operações isoladas evita-se o aumento do acoplamento e eventuais ambiguidades no parâmetro de entrada.Mecânica Criar vários métodos. Um para cada parâmetro de entrada.

Preserve Whole Object Quando são obtidos valores de um objecto, para serem passados a um método.Motivação Evitar alterações a chamadas ao método, caso o método necessite de mais informações do objecto futuramente.Mecânica Criar um novo parâmetro, para o objecto, de onde o valor dos parâmetros foi obtido. Substituir a referencia a um parâmetro, pela referencia ao método adequado do objecto recebido. Para cada parâmetro, remover o parâmetro, compilar e testar. Remover o código usado para obter os parâmetros que estavam a ser usados na chamada ao método.

Replace Parameter with Method Quando um parâmetro de um método pode ser obtido através da chamada a um método.Motivação Evitar lista extensa de parâmetros. Maior legibilidade do código.Mecânica Se necessário criar um método para obter o parâmetro. Substituir as referências ao parâmetro, por referências ao método. Para cada substituição, compilar e testar. Remover o parâmetro da lista de parâmetros do método.

Introduce Parameter Object Quando um método recebe vários parâmetros.Motivação Evitar lista extensa de parâmetros. Maior legibilidade do código.Mecânica Criar uma nova classe (imutável) que representa o grupo de parâmetros. Adicionar a nova classe aos parâmetros do método. Para cada parâmetro do conjunto inicial, remover um a um e modificar o código do método e chamadas ao mesmo. Analisar a colocação de comportamento na classe criada.

Remove Setting Method Um campo de uma classe deve ser inicializado na criação e nunca mais ser alterado. Remover qualquer Setter que exista para aquele campo.Motivação Tornar clara a intenção de que o campo da classe apenas pode ser atribuído na construção.Mecânica Garantir que o setter apenas é chamado no constructor. Modificar o constructor para aceder directamente ao campo.

Hide Method Um método não é utilizado por nenhuma outra classe. Torne-se privado.Motivação Evitar a “poluição” da interface pública. Por vezes no início de vida de uma classe são disponibilizados métodos que durante a sua evolução passam a ser desnecessários.Mecânica Procurar em todos os momentos identificar manual ou automaticamente métodos aos quais possam ser dados uma visibilidade inferior.

Replace Constructor with Factory Method Um objecto necessita de uma construção avançada.Motivação Por vezes a criação de um objecto depende de um tipo passado na construção, e durante a evolução passou a existir uma sub-classe para cada tipo.Mecânica Criar um método fábrica, chamando o constructor actual. Substituir todas as chamadas ao constructor pelo método. Tornar o constructor privado.

Encapsulate Downcast Passar para o corpo do método a responsabilidade de fazer o downcast do tipo de retorno, quando se sabe que o mesmo é um tipo derivado do especificado na assinatura.Motivação Evitar utilização desnecessária de downcasts. Fazer com que após a utilização de um método não seja necessário fazer a conversão do seu retorno para um tipo mais específico do que o anunciado na assinatura.Mecânica Identificar casos em que é feito downcast ao retorno de um método e fazer o downcast no seu interior. Esta alteração não deverá trazer complicações com código já existente uma vez que se trata da sub- classe esperada.

Replace Error Code with Exception Devido à possibilidade de ocorrência de erros inesperados, deverão ser utilizadas excepções no sentido de levar o erro até ao chamador.Motivação Fazer com que os erros gritem. Impedir que a ocorrência de um erro numa chamada a um método se traduza no retorno de um código de erro.Mecânica Substituir retorno de códigos de erros pela utilização de mecanismo de excepções das linguagens, optando por excepções checked ou unchecked, procedendo à alteração da assinatura do método. Alterar o código nas chamadas ao método capturando a excepção ou passando-a para cima.

Replace Exception with Test Situações em que se pode evitar o lançamento de excepções.Motivação Evitar uso de excepções por falta de testes de condições. O tratamento de erros esperados deverá ser feito pelo teste das condições que os podem originar, passando assim para o chamador esta responsabilidade.Mecânica Testar condição causadora de erro a ser capturado por bloco try-catch no chamador e incluir uma asserção no catch. Remover o bloco try-catch do chamador e o lançamento da excepção na assinatura do método, caso se aplique.

ES – 2º Apresentação Teórica

Poltergeists “Não sei o que é que esta classe faz.... Mas deve ser importante.Sintoma Criar operações isoladas. Classes com papeis e ciclos de vida muito limitados. Tipicamente são usadas para iniciar outros processos. Criadas por programadores desconhecedores da programação orientada a objectos.Solução Refactorizar e atribuir as funcionalidades a objectos com papeis e ciclos de vida maior. Utilizar o método de refactorização Ghostbusters.

ES – 2º Apresentação Teórica

Vendor Lock-In Desenho da arquitectura do sistema especificando partes que dependem directamente com um produto de terceiros.Sintoma Updates ao produto adoptado implicam manutenção do sistema. Funcionamento correcto apenas com versões específicas do produto.Solução Especificar uma interface com as funcionalidades exigidas pelo sistema. Implementar camada intermédia que comunique com o produto adoptado. Sistema Produto Adoptado Sistema Camada de Isolamento Produto Adoptado

ES – 2º Apresentação Teórica