TOP 5 DES MEILLEURES
FAÇON D'AMÉLIORER
VOTRE CODE .NET

Write once
read many.
INTRODUCTION
 Legacy code is code
without tests
 Michael Feather dans
Working effectively with
legacy code

 Sans une
m...
MES 5 AMÉLIORATIONS
1. Simplifier les conditionnels
2. Supprimer la documentation
3. Clarifier les contrats
4. Réduire le ...
SIMPLIFIER LES CONDITIONNELS –
POURQUOI?

1
2
3
4
5






Réduit la
Améliore
Améliore
Améliore

complexité
la lisibili...
SIMPLIFIER LES CONDITIONNELS–
QUAND?

1
2
3
4
5







il y a plus d'une condition (and / or);
il y a trop de code da...
SIMPLIFIER LES CONDITIONNELS –
COMMENT?

1
2
3
4
5

 Refactor conditional statement








Decompose conditional
...
DECOMPOSE CONDITIONAL
1
2

4
5

SIMPLIFIER LES
CONDITIONNELS

3

© Pyxis Technologies inc.

Top 5 des meilleures façon d'a...
CONSOLIDATE CONDITIONAL EXPRESSION
1
2

4
5

SIMPLIFIER LES
CONDITIONNELS

3

© Pyxis Technologies inc.

Top 5 des meilleu...
CONSOLIDATE DUPLICATE CONDITIONAL
FRAGMENTS

1
2

4
5

SIMPLIFIER LES
CONDITIONNELS

3

© Pyxis Technologies inc.

Top 5 d...
INTRODUCE NULL OBJECT
1
2

4
5

SIMPLIFIER LES
CONDITIONNELS

3

© Pyxis Technologies inc.

Top 5 des meilleures façon d'a...
FLATTEN NESTED IF
1
2

4
5

SIMPLIFIER LES
CONDITIONNELS

3

© Pyxis Technologies inc.

Top 5 des meilleures façon d'améli...
DON'T USE NEGATIVE
1
2

4
5

SIMPLIFIER LES
CONDITIONNELS

3

© Pyxis Technologies inc.

Top 5 des meilleures façon d'amél...
KEEP CONDITIONAL STATEMENT LEAN
1

 Autant que possible, avoir une seule condition

2

 Utilisez une méthode pour combin...
REPLACE CONDITIONAL WITH
POLYMORPHISM

1
2

4
5

SIMPLIFIER LES
CONDITIONNELS

3

© Pyxis Technologies inc.

Top 5 des mei...
REPLACE CONDITIONAL LOGIC WITH
STRATEGY

1
2

4
5

SIMPLIFIER LES
CONDITIONNELS

3

© Pyxis Technologies inc.

Top 5 des m...
REPLACE CONDITIONAL DISPATCHER WITH
COMMAND

1
2

4
5

SIMPLIFIER LES
CONDITIONNELS

3

© Pyxis Technologies inc.

Top 5 d...
1

SUPPRIMER LA DOCUMENTATION –
POURQUOI?

2
3
4

 Améliore la lisibilité
 Améliore la maintenabilité
 Évite les commen...
1

SUPPRIMER LA DOCUMENTATION –
QUAND?

2
3
4
5

 Chaque fois qu'un commentaire est autre chose que de
l'information (uti...
SUPPRIMER LA DOCUMENTATION –
COMMENT?

1
2
3
4
5

 Remplacez les commentaires par une bonne nomenclature
 Extract method...
EXTRACT METHOD
1
2

4
5

SUPPRIMER LA
DOCUMENTATION

3

© Pyxis Technologies inc.

Top 5 des meilleures façon d'améliorer ...
UTILISEZ DES NOMS SIGNIFICATIFS
1

 Nommez selon l'intention / évitez le mapping

2

4
5

 Évitez la désinformation

 S...
PROPERTIES
1

3
4
5

 SUPPRIMER LA
DOCUMENTATION

2

 Utilisez le PascalCase naming
 Nommez les propriété avec un nom o...
ENUMS
1

3
4
5

 SUPPRIMER LA
DOCUMENTATION

2

 Considérez le premier
élément comme valeur par
défaut
 Utilisez le Pas...
EVENTS
1

3
4
5

 SUPPRIMER LA
DOCUMENTATION

2

 Utilisez le PascalCase naming
 Nommez les événement avec un verbe au
...
EVENTS
1

3
4
5

 SUPPRIMER LA
DOCUMENTATION

2

© Pyxis Technologies inc.

Top 5 des meilleures façon d'améliorer votre ...
METHODS
1

 Utilisez des verbes pour nommer les méthodes

2

4
5

 SUPPRIMER LA
DOCUMENTATION

3

 ProcessPayment

 Ex...
1

CLARIFIER LES CONTRATS –
POURQUOI?

2
3
4

 Améliore la performance
 Améliore la lisibilité
 Améliore la reutilisabi...
CLARIFIER LES CONTRATS– QUAND?

1
2
3
4
5






Il y a trop de paramètres (combien est -ce?)
Un méthode fait plus d'un...
1

CLARIFIER LES CONTRATS–
COMMENT?

2
3
4
5

 Réduisez le nombre de paramètres
 Introduce parameter object
 Create ove...
2
3
4
5

CLARIFIER LES CONTRATS

1

INTRODUCE PARAMETER OBJECT

© Pyxis Technologies inc.

Top 5 des meilleures façon d'am...
2
3
4
5

CLARIFIER LES CONTRATS

1

CREATE OVERLOAD WITH FEWER
PARAMETERS

© Pyxis Technologies inc.

Top 5 des meilleures...
2
3
4
5

CLARIFIER LES CONTRATS

1

USE DEFAULT VALUE

© Pyxis Technologies inc.

Top 5 des meilleures façon d'améliorer v...
1

RÉDUIRE LE SCOPE – POURQUOI?

2
3
4

 Évite les effets de bords
 Améliore la réutilisabilité
 Améliore la maintenabi...
1

RÉDUIRE LE SCOPE – QUAND?

2
3

 Un field est utilisé par trop peu de méthodes
 Les membres publiques expose le compo...
1

RÉDUIRE LE SCOPE – COMMENT?

2
3
4
5

 Visibilité
 protected
 private
 internal

 Responsabilité
 Déplacer un fie...
ÉLIMINER LE CODE MORT –
POURQUOI?

1
2
3
4
5







Parcequ'il le faut
Améliore la maintenabilité
Améliore la perform...
1

ÉLIMINER LE CODE MORT – QUAND?

2
3
4

 Vous savez que le code est mort
 Vous pensez que le code est mort
 Vous voul...
1

ÉLIMINER LE CODE MORT – COMMENT?

2
3
4
5

 Identifiez et retirez le code mort
 Effacez le code
 Compilez
 Roulez l...
REFERENCES
 Refactoring – Improving the design of existing code
 Auteur: Martin Fowler
 Edition: Addison Wesley
 ISBN:...
LA FIN
 Questions?
 Rappelez-vous

Simplifier les
conditionnels

Supprimer la
documentation

Clarifier les
contrats

Réd...
Prochain SlideShare
Chargement dans…5
×

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

1 862 vues

Publié le

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

Publié dans : Technologie
0 commentaire
4 j’aime
Statistiques
Remarques
  • Soyez le premier à commenter

Aucun téléchargement
Vues
Nombre de vues
1 862
Sur SlideShare
0
Issues des intégrations
0
Intégrations
85
Actions
Partages
0
Téléchargements
24
Commentaires
0
J’aime
4
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive
  • Pourquoi?Quand?Comment?
  • Only one level of abstraction per methodSwitch case? Polymorphism?
  • The nameshouldasnwer all big questionsThe code shouldbereadablelike a storyOne word per concept (i.e. State -> AddressState != SystemState)
  • ** Use Intention-Revealing names (d -> elapsedInDays)** Avoid disinformation (AccountList -> Accounts)** Make meaningful distinction (moneyAmountvs money vs amount -> InvoiceTotal)** Use pronounceable names (genymdhms -> generationTimestamp** Avoid encoding (phoneString -> phone)** Avoid mental mapping (a -> account)** Class names -> noun not verbs** Method names -> verbs (SaveAccount)** Don't be cute. Use standard names (Destroy, kill, obliterate -> Delete)** Solution Domain Names (Interface) vs Problem Domain Names (Implémentation)
  • Reduce number of parameters - Clean code chapter 3 (p. 40-43)
  • Réduisez la visibilitéUtilisez les protectedUtilisez les privateUtilisez les InternalRéduisez le scopeDéplacez un field vers une méthodeScindez une classeDéplacer une variable près de son utilisationRéduisez la durée de vieInitialisation tardiveRéduisez les référencesLibérer tôt
  • Dead procedure / function / methodDead variableDead parameterDead return valueDead event declarationDead enumeration / constantDead typeDead class / structDead interface
  • Top 5 des meilleures façons d'améliorer votre code

    1. 1. TOP 5 DES MEILLEURES FAÇON D'AMÉLIORER VOTRE CODE .NET Write once read many.
    2. 2. INTRODUCTION  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" © Pyxis Technologies inc. Top 5 des meilleures façon d'améliorer votre code 2
    3. 3. 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 3
    4. 4. SIMPLIFIER LES CONDITIONNELS – POURQUOI? 1 2 3 4 5     Réduit la Améliore Améliore Améliore complexité la lisibilité la maintenabilité la réutilisabilité © Pyxis Technologies inc. Top 5 des meilleures façon d'améliorer votre code 4
    5. 5. SIMPLIFIER LES CONDITIONNELS– QUAND? 1 2 3 4 5      il y a plus d'une condition (and / or); il y a trop de code dans le body; la condition est basée sur un type; il y a des if imbriqués il y a plusieurs décisions basées sur la même information (if / else if / switch case) © Pyxis Technologies inc. Top 5 des meilleures façon d'améliorer votre code 5
    6. 6. SIMPLIFIER LES CONDITIONNELS – COMMENT? 1 2 3 4 5  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 © Pyxis Technologies inc. Top 5 des meilleures façon d'améliorer votre code 6
    7. 7. DECOMPOSE CONDITIONAL 1 2 4 5 SIMPLIFIER LES CONDITIONNELS 3 © Pyxis Technologies inc. Top 5 des meilleures façon d'améliorer votre code 7
    8. 8. CONSOLIDATE CONDITIONAL EXPRESSION 1 2 4 5 SIMPLIFIER LES CONDITIONNELS 3 © Pyxis Technologies inc. Top 5 des meilleures façon d'améliorer votre code 8
    9. 9. CONSOLIDATE DUPLICATE CONDITIONAL FRAGMENTS 1 2 4 5 SIMPLIFIER LES CONDITIONNELS 3 © Pyxis Technologies inc. Top 5 des meilleures façon d'améliorer votre code 9
    10. 10. INTRODUCE NULL OBJECT 1 2 4 5 SIMPLIFIER LES CONDITIONNELS 3 © Pyxis Technologies inc. Top 5 des meilleures façon d'améliorer votre code 10
    11. 11. FLATTEN NESTED IF 1 2 4 5 SIMPLIFIER LES CONDITIONNELS 3 © Pyxis Technologies inc. Top 5 des meilleures façon d'améliorer votre code 11
    12. 12. DON'T USE NEGATIVE 1 2 4 5 SIMPLIFIER LES CONDITIONNELS 3 © Pyxis Technologies inc. Top 5 des meilleures façon d'améliorer votre code 12
    13. 13. KEEP CONDITIONAL STATEMENT LEAN 1  Autant que possible, avoir une seule condition 2  Utilisez une méthode pour combiner plusieurs condition 4 5  SIMPLIFIER LES CONDITIONNELS 3  Inverser le if si la plupart (ou tout) le code se trouve dans la branche true  Attention à la double négation © Pyxis Technologies inc. Top 5 des meilleures façon d'améliorer votre code 13
    14. 14. REPLACE CONDITIONAL WITH POLYMORPHISM 1 2 4 5 SIMPLIFIER LES CONDITIONNELS 3 © Pyxis Technologies inc. Top 5 des meilleures façon d'améliorer votre code 14
    15. 15. REPLACE CONDITIONAL LOGIC WITH STRATEGY 1 2 4 5 SIMPLIFIER LES CONDITIONNELS 3 © Pyxis Technologies inc. Top 5 des meilleures façon d'améliorer votre code 15
    16. 16. REPLACE CONDITIONAL DISPATCHER WITH COMMAND 1 2 4 5 SIMPLIFIER LES CONDITIONNELS 3 © Pyxis Technologies inc. Top 5 des meilleures façon d'améliorer votre code 16
    17. 17. 1 SUPPRIMER LA DOCUMENTATION – POURQUOI? 2 3 4  Améliore la lisibilité  Améliore la maintenabilité  Évite les commentaires désuet 5 © Pyxis Technologies inc. Top 5 des meilleures façon d'améliorer votre code 17
    18. 18. 1 SUPPRIMER LA DOCUMENTATION – QUAND? 2 3 4 5  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, ligne par ligne, le code  Exemple:     // // // // Getting connection string from configuration Opening connection Retrieving data Closing connection © Pyxis Technologies inc. Top 5 des meilleures façon d'améliorer votre code 18
    19. 19. SUPPRIMER LA DOCUMENTATION – COMMENT? 1 2 3 4 5  Remplacez les commentaires par une bonne nomenclature  Extract method  Utilisez des noms significatifs  Écrivez des commentaires utiles  Respectez la nomenclature (MSDN: Guidelines for names)     Properties Enums Events Methods © Pyxis Technologies inc. Top 5 des meilleures façon d'améliorer votre code 19
    20. 20. EXTRACT METHOD 1 2 4 5 SUPPRIMER LA DOCUMENTATION 3 © Pyxis Technologies inc. Top 5 des meilleures façon d'améliorer votre code 20
    21. 21. UTILISEZ DES NOMS SIGNIFICATIFS 1  Nommez selon l'intention / évitez le mapping 2 4 5  Évitez la désinformation  SUPPRIMER LA DOCUMENTATION 3  d  elapsedDays  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 classe  Utilisez un verbe pour nommer une méthode  Ne soyez pas créatif, utilisez les nom standards  Destroy, Kill, Obliterate  Delete  Domaine de solution ↔ domaine du problème © Pyxis Technologies inc. Top 5 des meilleures façon d'améliorer votre code 21
    22. 22. PROPERTIES 1 3 4 5  SUPPRIMER LA DOCUMENTATION 2  Utilisez le PascalCase naming  Nommez les propriété avec un nom ou un adjectif  N'utilisez pas de noms qui pourraient être confondu avec une méthode Get  Préfixez les booléen avec Can, Is ou Has © Pyxis Technologies inc. Top 5 des meilleures façon d'améliorer votre code 22
    23. 23. ENUMS 1 3 4 5  SUPPRIMER LA DOCUMENTATION 2  Considérez le premier élément comme valeur par défaut  Utilisez le PascalCasing naming  Les Enum simples doivent utiliser le singulier  Les Enum de type Bit fields devraient utiliser le pluriel er avoir l'attribut Flags  Les valeurs des Enum de type bit fields doivent être coherentes (Read & Write == ReadWrite) © Pyxis Technologies inc. Top 5 des meilleures façon d'améliorer votre code 23
    24. 24. EVENTS 1 3 4 5  SUPPRIMER LA DOCUMENTATION 2  Utilisez le PascalCase naming  Nommez 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énement  Fournissez une façon d'annuler un pré événement © Pyxis Technologies inc. Top 5 des meilleures façon d'améliorer votre code 24
    25. 25. EVENTS 1 3 4 5  SUPPRIMER LA DOCUMENTATION 2 © Pyxis Technologies inc. Top 5 des meilleures façon d'améliorer votre code 25
    26. 26. METHODS 1  Utilisez des verbes pour nommer les méthodes 2 4 5  SUPPRIMER LA DOCUMENTATION 3  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) © Pyxis Technologies inc. Top 5 des meilleures façon d'améliorer votre code 26
    27. 27. 1 CLARIFIER LES CONTRATS – POURQUOI? 2 3 4  Améliore la performance  Améliore la lisibilité  Améliore la reutilisabilité 5 © Pyxis Technologies inc. Top 5 des meilleures façon d'améliorer votre code 27
    28. 28. CLARIFIER LES CONTRATS– QUAND? 1 2 3 4 5     Il y a trop de paramètres (combien est -ce?) Un méthode fait plus d'une chose Une méthode utilise des paramètre out Vous avez besoin de valeur par défaut © Pyxis Technologies inc. Top 5 des meilleures façon d'améliorer votre code 28
    29. 29. 1 CLARIFIER LES CONTRATS– COMMENT? 2 3 4 5  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 © Pyxis Technologies inc. Top 5 des meilleures façon d'améliorer votre code 29
    30. 30. 2 3 4 5 CLARIFIER LES CONTRATS 1 INTRODUCE PARAMETER OBJECT © Pyxis Technologies inc. Top 5 des meilleures façon d'améliorer votre code 30
    31. 31. 2 3 4 5 CLARIFIER LES CONTRATS 1 CREATE OVERLOAD WITH FEWER PARAMETERS © Pyxis Technologies inc. Top 5 des meilleures façon d'améliorer votre code 31
    32. 32. 2 3 4 5 CLARIFIER LES CONTRATS 1 USE DEFAULT VALUE © Pyxis Technologies inc. Top 5 des meilleures façon d'améliorer votre code 32
    33. 33. 1 RÉDUIRE LE SCOPE – POURQUOI? 2 3 4  Évite les effets de bords  Améliore la réutilisabilité  Améliore la maintenabilité 5 © Pyxis Technologies inc. Top 5 des meilleures façon d'améliorer votre code 33
    34. 34. 1 RÉDUIRE LE SCOPE – QUAND? 2 3  Un field est utilisé par trop peu de méthodes  Les membres publiques expose le comportement interne 4 5 © Pyxis Technologies inc. Top 5 des meilleures façon d'améliorer votre code 34
    35. 35. 1 RÉDUIRE LE SCOPE – COMMENT? 2 3 4 5  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 © Pyxis Technologies inc. Top 5 des meilleures façon d'améliorer votre code 35
    36. 36. ÉLIMINER LE CODE MORT – POURQUOI? 1 2 3 4 5      Parcequ'il le faut Améliore la maintenabilité Améliore la performance Améliore la lisibilité 100% de couverture de test © Pyxis Technologies inc. Top 5 des meilleures façon d'améliorer votre code 36
    37. 37. 1 ÉLIMINER LE CODE MORT – QUAND? 2 3 4  Vous savez que le code est mort  Vous pensez que le code est mort  Vous voulez que le code soit mort 5 © Pyxis Technologies inc. Top 5 des meilleures façon d'améliorer votre code 37
    38. 38. 1 ÉLIMINER LE CODE MORT – COMMENT? 2 3 4 5  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 © Pyxis Technologies inc. Top 5 des meilleures façon d'améliorer votre code 38
    39. 39. REFERENCES  Refactoring – Improving the design of existing code  Auteur: Martin Fowler  Edition: Addison Wesley  ISBN: 978-0-201-48567-7  Refactoring to patterns (Martin Fowler signature)  Auteur: Joshua Kerievsky  Edition: Adison Wesley  ISBN: 978-0-321-21335-1  Clean code – a handbook of agile software craftsmanship  Auteur: Robert C. Martin  Edition: Prentice Hall  ISBN: 978-0-132-35088-4  Working effectively with legacy code  Auteur: Michael C. Feather  Edition: Prentice Hall  ISBN: 978-0-13-117705-5 © Pyxis Technologies inc. Top 5 des meilleures façon d'améliorer votre code 39
    40. 40. LA FIN  Questions?  Rappelez-vous Simplifier les conditionnels Supprimer la documentation Clarifier les contrats Réduire le scope Éliminer le code mort  Eric De Carufel  eric@decarufel.net  http://blog.decarufel.net © Pyxis Technologies inc. Top 5 des meilleures façon d'améliorer votre code 40

    ×