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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
EVENTS
1

3
4
5

 SUPPRIMER LA
DOCUMENTATION

2

© Pyxis Technologies inc.

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

25
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
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
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
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
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
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
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
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
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
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
É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
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
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
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
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

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

  • 1.
    TOP 5 DESMEILLEURES FAÇON D'AMÉLIORER VOTRE CODE .NET Write once read many.
  • 2.
    INTRODUCTION  Legacy codeis 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.
    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.
    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.
    SIMPLIFIER LES CONDITIONNELS– QUAND? 1 2 3 4 5      ily 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.
    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.
    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.
    CONSOLIDATE CONDITIONAL EXPRESSION 1 2 4 5 SIMPLIFIERLES CONDITIONNELS 3 © Pyxis Technologies inc. Top 5 des meilleures façon d'améliorer votre code 8
  • 9.
    CONSOLIDATE DUPLICATE CONDITIONAL FRAGMENTS 1 2 4 5 SIMPLIFIERLES CONDITIONNELS 3 © Pyxis Technologies inc. Top 5 des meilleures façon d'améliorer votre code 9
  • 10.
    INTRODUCE NULL OBJECT 1 2 4 5 SIMPLIFIERLES CONDITIONNELS 3 © Pyxis Technologies inc. Top 5 des meilleures façon d'améliorer votre code 10
  • 11.
    FLATTEN NESTED IF 1 2 4 5 SIMPLIFIERLES CONDITIONNELS 3 © Pyxis Technologies inc. Top 5 des meilleures façon d'améliorer votre code 11
  • 12.
    DON'T USE NEGATIVE 1 2 4 5 SIMPLIFIERLES CONDITIONNELS 3 © Pyxis Technologies inc. Top 5 des meilleures façon d'améliorer votre code 12
  • 13.
    KEEP CONDITIONAL STATEMENTLEAN 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.
    REPLACE CONDITIONAL WITH POLYMORPHISM 1 2 4 5 SIMPLIFIERLES CONDITIONNELS 3 © Pyxis Technologies inc. Top 5 des meilleures façon d'améliorer votre code 14
  • 15.
    REPLACE CONDITIONAL LOGICWITH 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.
    REPLACE CONDITIONAL DISPATCHERWITH 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.
    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.
    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.
    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.
    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.
    UTILISEZ DES NOMSSIGNIFICATIFS 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.
    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.
    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.
    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.
    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.
    METHODS 1  Utilisez desverbes 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.
    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.
    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.
    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.
    2 3 4 5 CLARIFIER LES CONTRATS 1 INTRODUCEPARAMETER OBJECT © Pyxis Technologies inc. Top 5 des meilleures façon d'améliorer votre code 30
  • 31.
    2 3 4 5 CLARIFIER LES CONTRATS 1 CREATEOVERLOAD WITH FEWER PARAMETERS © Pyxis Technologies inc. Top 5 des meilleures façon d'améliorer votre code 31
  • 32.
    2 3 4 5 CLARIFIER LES CONTRATS 1 USEDEFAULT VALUE © Pyxis Technologies inc. Top 5 des meilleures façon d'améliorer votre code 32
  • 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.
    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.
    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.
    ÉLIMINER LE CODEMORT – 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.
    1 ÉLIMINER LE CODEMORT – 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.
    1 ÉLIMINER LE CODEMORT – 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.
    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.
    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

Notes de l'éditeur

  • #4 Pourquoi?Quand?Comment?
  • #6 Only one level of abstraction per methodSwitch case? Polymorphism?
  • #20 The nameshouldasnwer all big questionsThe code shouldbereadablelike a storyOne word per concept (i.e. State -> AddressState != SystemState)
  • #22 ** 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)
  • #30 Reduce number of parameters - Clean code chapter 3 (p. 40-43)
  • #36 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
  • #39 Dead procedure / function / methodDead variableDead parameterDead return valueDead event declarationDead enumeration / constantDead typeDead class / structDead interface