Upload
eric-de-carufel
View
1.368
Download
0
Tags:
Embed Size (px)
DESCRIPTION
Une présentation toujours utile pour éviter de dégrader la qualité du code
Citation preview
TOP 5 DES MEILLEURES FAÇON D'AMÉLIORER
VOTRE CODE .NET
Write once read many.
Mon
© 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
© 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
© 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
© 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
© 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
© 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
© 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
© 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
© 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
© 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
© 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
© 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
© 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
© 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
© 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
© 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
© 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
© 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
© 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
© 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
© 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
© 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
© 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
© 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
© 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
© 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
© 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
© 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
© 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
© 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
© 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
© 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
© 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
© 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
© 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
© 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
© 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
© 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
© 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