Instituto Superior de Engenharia de Lisboa
Mestrado em Engenharia Informática e de Computadores
Padrões e
Anti-Padrões
Engenharia de Software
Manuel Felício, nº 29189
Francisco Covas, nº 29391
Agenda
•Anti-Padrões:
•Cut-and-Paste Programming
•The Grand Old Duke of York
•The Feud
•Técnicas
de Refactorização:
•Rename Method
•Encapsulating Downcast
Cut-and-Paste Programming
•Reutilização
de código através da cópia
•Replicação de bugs pelo código
•Maior dificuldade na localização e correcção de bugs
•Aumenta a quantidade de linhas de código sem um
aumento directo de funcionalidade
•Aumento de entropia
Cut-and-Paste Programming
•Criar
código reutilizável demora tempo e requer
elevado esforço
•Baixo conhecimento técnico sobre técnicas de
desenvolvimento
•Ocorre com frequência quando não há familiaridade
com a tecnologia usada
Cut-and-Paste Programming
•Solução:
•Refactorizar o código repetido em módulos
independentes, maximizando a sua reutilização
•Módulos com uma interface bem definida
•Numa biblioteca à parte
The Grand Old Duke of York
•Existem
2 grupos de indivíduos que desenvolvem
software:
•Abstraccionistas:
•Têm uma visão mais abstracta do problema
•Conseguem criar arquitecturas mais genéricas
•Implementistas:
•Mais focados em implementações concretas
•Não têm facilidade em compreender abstracções
The Grand Old Duke of York
•De
acordo com peritos, existem mais implementistas
que abstraccionistas
•No desenvolvimento de software as decisões de
arquitectura são tomadas por consenso
•As soluções dos implementistas são as escolhidas por
estes serem em maior número
•As arquitecturas tornam-se mais complexas como
resultado de todos estes factores
The Grand Old Duke of York
•Solução:
•Divisão de tarefas
•Abstraccionistas responsáveis pela arquitectura
•Implementistas responsáveis pela
implementação
The Feud
•Conflitos
entre gestores de projectos podem afectar
o ambiente de trabalho
•Estes problemas podem reflectir-se nas atitudes e
comportamentos dos empregados
•Fraca comunicação produtiva implica baixa
transferência de conhecimento
•Os comportamentos negativos podem prolongar-se
durante anos
The Feud
•Solução:
•Pequenos eventos de confraternização podem
melhorar a relação entre os empregados
•Os eventos melhoram a comunicação entre
os vários níveis da hierarquia
•Promoção de actividades em grupo (viagens,
eventos desportivos)
•Recorrer a ajuda profissional (psicólogos)
Making Method calls Simpler
•Rename
Method
•Encapsulate Downcast
Rename Method
•Nomes
de métodos devem ser claros e explícitos
•Nomes de métodos devem reflectir o seu propósito
•O nosso código também é lido por humanos
Rename Method
:
•Solução
•Garantir que não há um método com o nome
desejado na classe base.
•Criar um método novo com o nome desejado e
copiar o código do método antigo para o novo.
•Colocar o método antigo a invocar o método novo.
•Substituir as referências para o método antigo, de
forma a chamar o método novo.
•Eliminar o método antigo ou marcá-lo como
deprecated, se não for possível eliminar.
Rename Method
•Visual
Studio 2008:
•Eclipse
3.2:
Encapsulate Downcast
•Minimizar
os downcasts no código cliente do método
•Tornar mais explícito os retornos dos métodos.
•Muito
frequente no acesso a colecções.
Encapsulate Downcast
•Exemplo:
•Antes
•Depois
Referências
•http://www.sourcemaking.com
Download

SCRUM - isel2918929391