bad smells no código

Post on 14-Apr-2017

390 Views

Category:

Technology

1 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Bad Smells Bad Smells in Codein Code

Lourdilene Souza

AgendaAgenda

✔ Bad Smells✔ Alguns tipos de bad smells✔ Exemplo✔ Refatoração

O que são O que são Bad Smells ?Bad Smells ?

“Maus cheiros no código são sintomas de má concepção ou implementação de escolhas" [ Martin Fowler ]

Por que conhecer e Por que conhecer e evitar ?evitar ?

Compreensão

Produtividade

Alguns Alguns Bad SmellsBad Smells

Code SmellsCode Smells

ComentáriosComentários

"Qualquer pessoa é capaz de escrever código que um computador possa entender. Bons programadores escrevem código que seres humanos podem entender." [Martin Fowler, Refactoring: Improving the Design of Existing Code]

Code SmellsCode Smells

Muitos parâmetros no MétodoMuitos parâmetros no Método

✔ Aumento da complexidade✔ Encapsular em objeto

Heranças paralelasHeranças paralelas

✔ Hierarquia em um única classe✔ Patterns

Code SmellsCode Smells

Código duplicadoCódigo duplicado

✔ DRY – Don’t Repeat Yourself!✔ Retrabalho✔ Difícil de manter✔ Pequenas variações

Code SmellsCode Smells

Complexidade CondicionalComplexidade Condicional✔ Grandes blocos if/else/switch

Tiro de EspingardaTiro de Espingarda

✔ Mudanças em uma classe com impacto em inúmeras outras.

✔ Refatorar para centralizar em uma classe ou usar herança.

Code SmellsCode Smells

Classe grandeClasse grande

✔ Classes grandes, como métodos longos, são difíceis de ler, compreender e debugar.

✔ Será que a classe tem responsabilidades demais?

✔ A classe grande pode ser reestruturada ou dividida em classes menores?

Bad Code Smells [Martin Fowler]Bad Code Smells [Martin Fowler]✔ DUPLICATED CODE✔ LONG METHOD✔ LARGE CLASS✔ LONG PARAMETER LIST✔ DIVERGENT CHANGE✔ SHOTGUN SURGERY✔ FEATURE ENVY✔ DATA CLUMPS✔ PRIMITIVE OBSESSION✔ SWITCH STATEMENTS✔ PARALLEL INHERITANCE HIERARCHIES✔ LAZY CLASS✔ SPECULATIVE GENERALITY✔ TEMPORARY FIELD✔ MESSAGE CHAINS✔ MIDDLE MAN✔ INAPPROPRIATE INTIMACY✔ ALTERNATIVE CLASSES WITH DIFFERENT INTERFACES✔ INCOMPLETE LIBRARY CLASS✔ DATA CLASS✔ REFUSED BEQUEST✔ COMMENTS

Como evitar ?Como evitar ?

✔ Pareamento✔ Code Review✔ Padronização✔ Pensar na manutenção no início do

projeto✔ Qualificação

Classe grandeClasse grande

Classe grandeClasse grande

Classe grandeClasse grande

ReferênciasReferênciashttp://martinfowler.com/https://sourcemaking.com/

Ta Safo ?!Ta Safo ?!Obrigada. Obrigada.

http://proex.ufpa.br/PRINCIPAL/ http://lourdilene.blogspot.com.br/

top related