40
TOP 5 DES MEILLEURES FAÇON D'AMÉLIORER VOTRE CODE .NET Write once read many. Mon

Top 5 des meilleures façons d'améliorer votre code

Embed Size (px)

DESCRIPTION

Une présentation toujours utile pour éviter de dégrader la qualité du code

Citation preview

Page 1: Top 5 des meilleures façons d'améliorer votre code

TOP 5 DES MEILLEURES FAÇON D'AMÉLIORER

VOTRE CODE .NET

Write once read many.

Mon

Page 2: Top 5 des meilleures façons d'améliorer votre code

© Pyxis Technologies inc. Top 5 des meilleures façon d'améliorer votre code

2

Legacy code is code without tests Michael Feather dans

Working effectively with legacy code

Sans une maintenance constante, le code se dégrade rapidement

Nous devons détecter et éliminer les "code smell"

INTRODUCTION

Page 3: Top 5 des meilleures façons d'améliorer votre code

© Pyxis Technologies inc. Top 5 des meilleures façon d'améliorer votre code

3

Réduire la hiérarchie de

classe

Augmenter la collaboration

Réduire le couplage

Augmenter a cohésion

Un niveau d'abstraction par méthode

Architecture par couche

Extratire les préoccupation transversales

MES 5 AMÉLIORATIONS

1. Simplifier les conditionnels

2. Supprimer la documentation

3. Clarifier les contrats

4. Réduire le scope

5. Éliminer le code mort

Page 4: Top 5 des meilleures façons d'améliorer votre code

© Pyxis Technologies inc. Top 5 des meilleures façon d'améliorer votre code

4

Réduit la complexitéAméliore la lisibil itéAméliore la maintenabilitéAméliore la réutil isabilité

SIMPLIFIER LES CONDITIONNELS – POURQUOI?

5

4

3

2

1

Page 5: Top 5 des meilleures façons d'améliorer votre code

© Pyxis Technologies inc. Top 5 des meilleures façon d'améliorer votre code

5

i l y a plus d'une condition (and / or); i l y a trop de code dans le body; la condition est basée sur un type; i l y a des if imbriqués i l y a plusieurs décisions basées sur la même information (if

/ else if / switch case)

SIMPLIFIER LES CONDITIONNELS– QUAND?

5

4

3

2

1

Page 6: Top 5 des meilleures façons d'améliorer votre code

© Pyxis Technologies inc. Top 5 des meilleures façon d'améliorer votre code

6

Refactor conditional statement Decompose conditional Consolidate conditional expression Consolidate duplicate conditional fragments Introduce null object Flatten nested if Don't use negative Keep conditional statement lean

Avoid conditional statement Replace conditional with polymorphism Replace conditional logic with strategy Replace conditional dispatcher with command

SIMPLIFIER LES CONDITIONNELS – COMMENT?

5

4

3

2

1

Page 7: Top 5 des meilleures façons d'améliorer votre code

© Pyxis Technologies inc. Top 5 des meilleures façon d'améliorer votre code 7

SIM

PL

IFIE

R L

ES

C

ON

DIT

ION

NE

LS

DECOMPOSE CONDITIONAL

5

4

3

2

1

Page 8: Top 5 des meilleures façons d'améliorer votre code

© Pyxis Technologies inc. Top 5 des meilleures façon d'améliorer votre code 8

SIM

PL

IFIE

R L

ES

C

ON

DIT

ION

NE

LS

CONSOLIDATE CONDITIONAL EXPRESSION

5

4

3

2

1

Page 9: Top 5 des meilleures façons d'améliorer votre code

© Pyxis Technologies inc. Top 5 des meilleures façon d'améliorer votre code 9

SIM

PL

IFIE

R L

ES

C

ON

DIT

ION

NE

LS

CONSOLIDATE DUPLICATE CONDITIONAL FRAGMENTS

5

4

3

2

1

Page 10: Top 5 des meilleures façons d'améliorer votre code

© Pyxis Technologies inc. Top 5 des meilleures façon d'améliorer votre code 10

SIM

PL

IFIE

R L

ES

C

ON

DIT

ION

NE

LS

INTRODUCE NULL OBJECT

5

4

3

2

1

Page 11: Top 5 des meilleures façons d'améliorer votre code

© Pyxis Technologies inc. Top 5 des meilleures façon d'améliorer votre code 11

SIM

PL

IFIE

R L

ES

C

ON

DIT

ION

NE

LS

FLATTEN NESTED IF

5

4

3

2

1

Page 12: Top 5 des meilleures façons d'améliorer votre code

© Pyxis Technologies inc. Top 5 des meilleures façon d'améliorer votre code 12

SIM

PL

IFIE

R L

ES

C

ON

DIT

ION

NE

LS

DON'T USE NEGATIVE

5

4

3

2

1

Page 13: Top 5 des meilleures façons d'améliorer votre code

© Pyxis Technologies inc. Top 5 des meilleures façon d'améliorer votre code 13

Autant que possible, avoir une seule condition Utilisez une méthode pour combiner plusieurs

condition Inverser le if si la plupart (ou tout) le code se

trouve dans la branche true Attention à la double négation

S

IMP

LIF

IER

LE

S

CO

ND

ITIO

NN

EL

S

KEEP CONDITIONAL STATEMENT LEAN

5

4

3

2

1

Page 14: Top 5 des meilleures façons d'améliorer votre code

© Pyxis Technologies inc. Top 5 des meilleures façon d'améliorer votre code 14

SIM

PL

IFIE

R L

ES

C

ON

DIT

ION

NE

LS

REPLACE CONDITIONAL WITH POLYMORPHISM

5

4

3

2

1

Page 15: Top 5 des meilleures façons d'améliorer votre code

© Pyxis Technologies inc. Top 5 des meilleures façon d'améliorer votre code 15

SIM

PL

IFIE

R L

ES

C

ON

DIT

ION

NE

LS

REPLACE CONDITIONAL LOGIC WITH STRATEGY

5

4

3

2

1

Page 16: Top 5 des meilleures façons d'améliorer votre code

© Pyxis Technologies inc. Top 5 des meilleures façon d'améliorer votre code 16

SIM

PL

IFIE

R L

ES

C

ON

DIT

ION

NE

LS

REPLACE CONDITIONAL DISPATCHER WITH COMMAND

5

4

3

2

1

Page 17: Top 5 des meilleures façons d'améliorer votre code

© Pyxis Technologies inc. Top 5 des meilleures façon d'améliorer votre code

17

Améliore la lisibil itéAméliore la maintenabilitéÉvite les commentaires désuet

SUPPRIMER LA DOCUMENTATION – POURQUOI?

5

4

3

2

1

Page 18: Top 5 des meilleures façons d'améliorer votre code

© Pyxis Technologies inc. Top 5 des meilleures façon d'améliorer votre code

18

Chaque fois qu'un commentaire est autre chose que de l ' information (utile), une intention, une clarification, un avertissement, un TODO ou une amplification.

Le commentaire est le seul contenu d'un bloc de code Catch vide

Le commentaire décrit, l igne par ligne, le code Exemple:

// Getting connection string from configuration // Opening connection // Retrieving data // Closing connection

SUPPRIMER LA DOCUMENTATION – QUAND?

5

4

3

2

1

Page 19: Top 5 des meilleures façons d'améliorer votre code

© Pyxis Technologies inc. Top 5 des meilleures façon d'améliorer votre code

19

Remplacez les commentaires par une bonne nomenclature Extract method Utilisez des noms significatifs

Écrivez des commentaires utilesRespectez la nomenclature (MSDN: Guidelines for names)

Properties Enums Events Methods

SUPPRIMER LA DOCUMENTATION – COMMENT?

5

4

3

2

1

Page 20: Top 5 des meilleures façons d'améliorer votre code

© Pyxis Technologies inc. Top 5 des meilleures façon d'améliorer votre code 20

SU

PP

RIM

ER

LA

D

OC

UM

EN

TA

TIO

N

EXTRACT METHOD

5

4

3

2

1

Page 21: Top 5 des meilleures façons d'améliorer votre code

© Pyxis Technologies inc. Top 5 des meilleures façon d'améliorer votre code 21

Nommez selon l ' intention / évitez le mapping d elapsedDays

Évitez la désinformation AccountList Accounts

Assurez-vous d’avoir une distinction significative amount invoiceTotal, invoiceSubTotal

Utilisez des noms prononçables genymdhms generationTimestamp

Utilisez un nom pour nommer une classeUtilisez un verbe pour nommer une méthodeNe soyez pas créatif, util isez les nom standards

Destroy, Kill, Obliterate DeleteDomaine de solution ↔ domaine du problème

SU

PP

RIM

ER

LA

D

OC

UM

EN

TA

TIO

N

UTILISEZ DES NOMS SIGNIFICATIFS

5

4

3

2

1

Page 22: Top 5 des meilleures façons d'améliorer votre code

© Pyxis Technologies inc. Top 5 des meilleures façon d'améliorer votre code 22

Utilisez le PascalCase namingNommez les propriété avec un nom ou un adjectifN'util isez pas de noms qui pourraient être

confondu avec une méthode GetPréfixez les booléen avec Can, Is ou Has

S

UP

PR

IME

R L

A

DO

CU

ME

NT

AT

ION

PROPERTIES

5

4

3

2

1

Page 23: Top 5 des meilleures façons d'améliorer votre code

© Pyxis Technologies inc. Top 5 des meilleures façon d'améliorer votre code 23

Considérez le premier élément comme valeur par défaut

Utilisez le PascalCasing naming

Les Enum simples doivent util iser le singulier

Les Enum de type Bit fields devraient util iser le pluriel er avoir l 'attribut Flags

Les valeurs des Enum de type bit fields doivent être coherentes (Read & Write == ReadWrite)

SU

PP

RIM

ER

LA

D

OC

UM

EN

TA

TIO

N

ENUMS

5

4

3

2

1

Page 24: Top 5 des meilleures façons d'améliorer votre code

© Pyxis Technologies inc. Top 5 des meilleures façon d'améliorer votre code 24

Utilisez le PascalCase namingNommez les événement avec un verbe au

present progressive pour les pré-événements et au passé pour les post-événements

Fournissez une version virtual de l'événementFournissez une façon d'annuler un pré-

événement

S

UP

PR

IME

R L

A

DO

CU

ME

NT

AT

ION

EVENTS

5

4

3

2

1

Page 25: Top 5 des meilleures façons d'améliorer votre code

© Pyxis Technologies inc. Top 5 des meilleures façon d'améliorer votre code 25

S

UP

PR

IME

R L

A

DO

CU

ME

NT

AT

ION

EVENTS

5

4

3

2

1

Page 26: Top 5 des meilleures façons d'améliorer votre code

© Pyxis Technologies inc. Top 5 des meilleures façon d'améliorer votre code 26

Utilisez des verbes pour nommer les méthodes ProcessPayment

Exprimez clairement le retour attendu lors de l 'appel de la méthode CreateCustomer GetInvoice

Utilisez une nomenclatue uniforme (Get, Fetch ou Retrieve mais pas tous dans le même contexte)

S

UP

PR

IME

R L

A

DO

CU

ME

NT

AT

ION

METHODS

5

4

3

2

1

Page 27: Top 5 des meilleures façons d'améliorer votre code

© Pyxis Technologies inc. Top 5 des meilleures façon d'améliorer votre code

27

Améliore la performanceAméliore la lisibil itéAméliore la reutil isabilité

CLARIFIER LES CONTRATS – POURQUOI?

5

4

3

2

1

Page 28: Top 5 des meilleures façons d'améliorer votre code

© Pyxis Technologies inc. Top 5 des meilleures façon d'améliorer votre code

28

Il y a trop de paramètres (combien est-ce?)Un méthode fait plus d'une choseUne méthode util ise des paramètre outVous avez besoin de valeur par défaut

CLARIFIER LES CONTRATS– QUAND?

5

4

3

2

1

Page 29: Top 5 des meilleures façons d'améliorer votre code

© Pyxis Technologies inc. Top 5 des meilleures façon d'améliorer votre code

29

Réduisez le nombre de paramètres Introduce parameter object Create overload with less parameters Use default value

Les ouputs La valeur de retour Les paramètres out

Overload dans le bon ordre

CLARIFIER LES CONTRATS– COMMENT?

5

4

3

2

1

Page 30: Top 5 des meilleures façons d'améliorer votre code

© Pyxis Technologies inc. Top 5 des meilleures façon d'améliorer votre code 30

CL

AR

IFIE

R L

ES

CO

NT

RA

TS

INTRODUCE PARAMETER OBJECT

5

4

3

2

1

Page 31: Top 5 des meilleures façons d'améliorer votre code

© Pyxis Technologies inc. Top 5 des meilleures façon d'améliorer votre code 31

CL

AR

IFIE

R L

ES

CO

NT

RA

TS

CREATE OVERLOAD WITH FEWER PARAMETERS

5

4

3

2

1

Page 32: Top 5 des meilleures façons d'améliorer votre code

© Pyxis Technologies inc. Top 5 des meilleures façon d'améliorer votre code 32

CL

AR

IFIE

R L

ES

CO

NT

RA

TS

USE DEFAULT VALUE

5

4

3

2

1

Page 33: Top 5 des meilleures façons d'améliorer votre code

© Pyxis Technologies inc. Top 5 des meilleures façon d'améliorer votre code

33

Évite les effets de bordsAméliore la réutil isabilitéAméliore la maintenabilité

RÉDUIRE LE SCOPE – POURQUOI?

5

4

3

2

1

Page 34: Top 5 des meilleures façons d'améliorer votre code

© Pyxis Technologies inc. Top 5 des meilleures façon d'améliorer votre code

34

Un field est util isé par trop peu de méthodesLes membres publiques expose le comportement interne

RÉDUIRE LE SCOPE – QUAND?

5

4

3

2

1

Page 35: Top 5 des meilleures façons d'améliorer votre code

© Pyxis Technologies inc. Top 5 des meilleures façon d'améliorer votre code

35

Visibilité protected private internal

Responsabilité Déplacer un field vers une méthode Scinder un classe Déplacer un variable près de son utilisation

Durée de vie Créer les instances au besoin Éviter de garder des références inutiles

RÉDUIRE LE SCOPE – COMMENT?

5

4

3

2

1

Page 36: Top 5 des meilleures façons d'améliorer votre code

© Pyxis Technologies inc. Top 5 des meilleures façon d'améliorer votre code

36

Parcequ'il le fautAméliore la maintenabilitéAméliore la performanceAméliore la lisibil ité100% de couverture de test

ÉLIMINER LE CODE MORT – POURQUOI?

5

4

3

2

1

Page 37: Top 5 des meilleures façons d'améliorer votre code

© Pyxis Technologies inc. Top 5 des meilleures façon d'améliorer votre code

37

Vous savez que le code est mortVous pensez que le code est mortVous voulez que le code soit mort

ÉLIMINER LE CODE MORT – QUAND?

5

4

3

2

1

Page 38: Top 5 des meilleures façons d'améliorer votre code

© Pyxis Technologies inc. Top 5 des meilleures façon d'améliorer votre code

38

Identifiez et retirez le code mort Effacez le code Compilez Roulez les tests

Qu'est-ce que du code mort? Du code en commentaire Toutes lignes de code non couverte par un test unitaire

Outils Il existe des outils qui supprime automatiquement le code non

couvert par au moins un test

ÉLIMINER LE CODE MORT – COMMENT?

5

4

3

2

1

Page 39: Top 5 des meilleures façons d'améliorer votre code

© Pyxis Technologies inc. Top 5 des meilleures façon d'améliorer votre code

39

Refactoring – Improving the design of exist ing code Auteur: Martin Fowler Edition: Addison Wesley ISBN: 978-0-201-48567-7

Refactoring to patterns (Mart in Fowler signature) Auteur: Joshua Kerievsky Edition: Adison Wesley ISBN: 978-0-321-21335-1

Clean code – a handbook of agi le software craftsmanship Auteur: Robert C. Martin Edition: Prentice Hall ISBN: 978-0-132-35088-4

Working effect ively with legacy code Auteur: Michael C. Feather Edition: Prentice Hall ISBN: 978-0-13-117705-5

REFERENCES

Page 40: Top 5 des meilleures façons d'améliorer votre code

© Pyxis Technologies inc. Top 5 des meilleures façon d'améliorer votre code

40

Questions?Rappelez-vous

Eric De Carufel [email protected] http://blog.decarufel.net

LA FIN

Simplifier les

conditionnels

Supprimer la documentati

on

Réduire le scope

Clarifier les contrats

Éliminer le code mort