Techniques avancées de refactoring
Parce qu’on a tous un jour rêvé de devenir un Ninja
Agile Testing Day
@NicholasSuter
Consultant / manager / couteau suisse
Visual Studio and Development
Technologies .NET / C#
http://www.nicho...
Pourquoi parler de refactoring aujourd’hui ?
Tester une nouvelle
application conçue pour
être testable, c’est facile.
Oui,...
1. Description du champ de bataille
2. Détecter et identifier l’ennemi
3. Techniques de combat et armement
Legacy
Le code des autres
Du code non-
supporté
Tout code déjà
écrit
Code without
automated tests
Michael Feathers in Work...
Styles d’architecture
1990 2000 2010
Styles d’architecture
Et parfois…
Refactoring
Refactoring
Le refactoring consiste à améliorer du code
existant sans modifier son comportement.
SOLID
Single responsibility
Open for extension, closed for modification
Liskov substitution
Interface segregation
Dependen...
Clean Code
Le code propre est :
Simple Expressif Lisible Organisé Testé
Clean Code
Bonnes pratiques
KISS YAGNI DRY
Keep it simple and stupid You aren’t going to need it Don’t repeat yourself
1. Description du champ de bataille
2. Détecter et identifier l’ennemi
3. Techniques de combat et armement
Cartographier
Cartographier
Mesurer la qualité du code
Parfois, l’estimation au doigt
mouillé n’est pas suffisante.
Mesurer la qualité du code
Nombre de
lignes de code
Complexité
cyclomatique
Taux de
couverture
Volume de
commentaires
Rati...
Mesurer la qualité du code
Code smells
Les code smells sont un indicateur de problèmes de
design applicatif.
« Les code smells sont des symptômes de ...
Code smells
Les Gros
Les méthodes
trop longues
Les classes
trop grosses
La liste de
paramètres
interminable
L’abus de
prim...
Code smells
Les Dispensables
Les
commentaires
Le code mort
Le code
dupliqué
Les classes
fainéantes
La généricité
spéculati...
Code smells
Les Abus de la Programmation Orientée Objet
Les switchs et
if/else if/else
if/else
Les champs
facultatifs
L’hé...
Code smells
Les Problèmes de Couplage
Feature Envy
Intimité
inappropriée
Enchaînements
excessifs
Man in the
middle
1. Description du champ de bataille
2. Détecter et identifier l’ennemi
3. Techniques de combat et armement
L’Arme Fatale
Cleaning the deck
• Renommage
• Déplacements de
blocs de code
Refactorings
Amélioration de la lisibilité et de la localisation du code
Rename
Move to…
• Move up
• Move down
Extract
var...
Refactorings
Découpage et organisation du code
Découpage de
grosses interfaces
en petites
interfaces ciblées
Extraction de...
Refactorings
Abstraction
Encapsuler un
champ
Remplacer les
conditionnelles par
du polymorphisme
Remplacer un code
de type ...
Fakes, mocks et stubs
Mock : permet également de
compter le nombre d'appels aux
méthodes
Mock
Stub
Fake
Stub : on lui inje...
Golden Master
Golden Master
Golden Master
Input Output
Unit tests
When [Input], then
[Output]
Demo
Kata !
Bien armer ses soldats
Roslyn Code Cracker
Bibliographie
Conclusion
• Ne négligez pas la théorie
• Maîtrisez les outils
• Ne soyez pas effrayés par la difficulté
• Gardez le bon é...
Prochain SlideShare
Chargement dans…5
×

[Agile Testing Day] Techniques avancées de tests

410 vues

Publié le

Soyons honnête : nous aimerions tous tester nos plateformes, nos codes, mais personne ne le fait vraiment bien. Heureusement, ce n’est pas une fatalité, et il n’est jamais trop tard pour tester ! La vraie question est : comment tester ? Derrière toute stratégie de tests efficace, il y a une connaissance de tous les types de tests disponibles, de leurs coûts et de leurs utilités. Tout au long de cette journée, nous allons vous détailler les différents types de tests, du test unitaire au test de charge, afin que vous puissiez évaluer la pertinence de chacun dans votre propre contexte.

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

  • Soyez le premier à aimer ceci

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

Aucune remarque pour cette diapositive

[Agile Testing Day] Techniques avancées de tests

  1. 1. Techniques avancées de refactoring Parce qu’on a tous un jour rêvé de devenir un Ninja Agile Testing Day
  2. 2. @NicholasSuter Consultant / manager / couteau suisse Visual Studio and Development Technologies .NET / C# http://www.nicholassuter.com/ http://blog.cellenza.com/author/nsuter/
  3. 3. Pourquoi parler de refactoring aujourd’hui ? Tester une nouvelle application conçue pour être testable, c’est facile. Oui, mais… et l’existant ?
  4. 4. 1. Description du champ de bataille 2. Détecter et identifier l’ennemi 3. Techniques de combat et armement
  5. 5. Legacy Le code des autres Du code non- supporté Tout code déjà écrit Code without automated tests Michael Feathers in Working Effectively with Legacy Code
  6. 6. Styles d’architecture 1990 2000 2010
  7. 7. Styles d’architecture Et parfois…
  8. 8. Refactoring
  9. 9. Refactoring Le refactoring consiste à améliorer du code existant sans modifier son comportement.
  10. 10. SOLID Single responsibility Open for extension, closed for modification Liskov substitution Interface segregation Dependency inversion
  11. 11. Clean Code Le code propre est : Simple Expressif Lisible Organisé Testé
  12. 12. Clean Code
  13. 13. Bonnes pratiques KISS YAGNI DRY Keep it simple and stupid You aren’t going to need it Don’t repeat yourself
  14. 14. 1. Description du champ de bataille 2. Détecter et identifier l’ennemi 3. Techniques de combat et armement
  15. 15. Cartographier
  16. 16. Cartographier
  17. 17. Mesurer la qualité du code Parfois, l’estimation au doigt mouillé n’est pas suffisante.
  18. 18. Mesurer la qualité du code Nombre de lignes de code Complexité cyclomatique Taux de couverture Volume de commentaires Ratio de méthodes trop longues Nombre de classes par librairie Nombre de méthodes par classe Indice de spécialisation Indice d’instabilité Coefficient d’abstraction Distance de bonne conception Taux de duplication
  19. 19. Mesurer la qualité du code
  20. 20. Code smells Les code smells sont un indicateur de problèmes de design applicatif. « Les code smells sont des symptômes de problèmes plus profonds. » Martin Fowler
  21. 21. Code smells Les Gros Les méthodes trop longues Les classes trop grosses La liste de paramètres interminable L’abus de primitives La dissémination de données
  22. 22. Code smells Les Dispensables Les commentaires Le code mort Le code dupliqué Les classes fainéantes La généricité spéculative
  23. 23. Code smells Les Abus de la Programmation Orientée Objet Les switchs et if/else if/else if/else Les champs facultatifs L’héritage abusif Le manque d’homogénéité
  24. 24. Code smells Les Problèmes de Couplage Feature Envy Intimité inappropriée Enchaînements excessifs Man in the middle
  25. 25. 1. Description du champ de bataille 2. Détecter et identifier l’ennemi 3. Techniques de combat et armement
  26. 26. L’Arme Fatale
  27. 27. Cleaning the deck • Renommage • Déplacements de blocs de code
  28. 28. Refactorings Amélioration de la lisibilité et de la localisation du code Rename Move to… • Move up • Move down Extract variable Inline variable
  29. 29. Refactorings Découpage et organisation du code Découpage de grosses interfaces en petites interfaces ciblées Extraction de méthode Extraction de classe
  30. 30. Refactorings Abstraction Encapsuler un champ Remplacer les conditionnelles par du polymorphisme Remplacer un code de type par un pattern State ou Strategy Extraction d’interface Ajout de paramètre
  31. 31. Fakes, mocks et stubs Mock : permet également de compter le nombre d'appels aux méthodes Mock Stub Fake Stub : on lui injecte du comportement dynamiquement Fake : faux objet généré manuellement simulant un objet réel à l'aide de valeurs codées en dur. IContract
  32. 32. Golden Master
  33. 33. Golden Master Golden Master Input Output Unit tests When [Input], then [Output]
  34. 34. Demo Kata !
  35. 35. Bien armer ses soldats Roslyn Code Cracker
  36. 36. Bibliographie
  37. 37. Conclusion • Ne négligez pas la théorie • Maîtrisez les outils • Ne soyez pas effrayés par la difficulté • Gardez le bon état d’esprit Des questions

×