Développer efficacement  avec du code legacy      Mathieu Gandin       @octomga
La plupart du temps on se retrouve à développer sur une  application dont le code est     relativement propre …© OCTO 2012...
… mais on se retrouve aussi àdévelopper sur du code Legacy…© OCTO 2012                      3
Vision Produit  Le code legacy, c’est quoi ? Quelques retours d’expérience  Pas qu’une histoire de code            Atelier...
Du vieux code                Du code sans test           N’importe quel code existant           Du code que tu n’as pas éc...
Tu peux fuir le code legacy …© OCTO 2012                         6
Tu peux maudire le code legacy … © OCTO 2012                   7
… Mais en ce moment, beaucoup(beaucoup) de code legacy est en       cours d’écriture …© OCTO 2012                    8
… Et c’est important car      Du code legacy doit encore être étendu         Du code legacy doit être corrigé           Du...
© OCTO 2012              TDD   10
Sans les tests, le code a peu de chance d’être             de meilleure qualité   Les méthodes et les classes s’allongentO...
« Pour refactorer j’ai besoin      d’avoir des testspour mettre des tests en place,          j’ai besoin      de refactore...
Identifier les éléments que l’on       souhaite changer   Trouver un point d’entrée          Ecrire un test    Casser les ...
© OCTO 2012   Sprout class & Sprout Method   14
Pourquoi être si prudent ?Avec une certaine masse de code il est facilede faire des erreurs sans s’en rendre compte       ...
Singleton (variable globale)Instanciation interne (hardcodé      (ça casse les tests …))  Code procédurale (c’est long    ...
© OCTO 2012   Orange   17
© OCTO 2012   Cadremploi   18
© OCTO 2012   Mediametrie   19
© OCTO 2012              Code Review   20
« Organizations which design   systems are constrained toproduce designs which are copiesof the communication structures  ...
Troisième atelier   MailService            NoteRetriever              Scheduler                          SchedulerDisplayT...
User Story #1“Il ne faut pas pouvoirajouter au schedulerdévénements datés davantaujourdhui. ”                             ...
User Story #2 “Ignorer les notes dela base qui sont uniquementdesséries despace.”                                    24
User Story #3“Corriger lanomaliesur le filtrage desbalises HTML.”(ex. <b>Formation TDD</b>Octo)                           ...
Upcoming SlideShare
Loading in...5
×

Working effectively with legacy code

671

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
671
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
1
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Working effectively with legacy code

  1. 1. Développer efficacement avec du code legacy Mathieu Gandin @octomga
  2. 2. La plupart du temps on se retrouve à développer sur une application dont le code est relativement propre …© OCTO 2012 2
  3. 3. … mais on se retrouve aussi àdévelopper sur du code Legacy…© OCTO 2012 3
  4. 4. Vision Produit Le code legacy, c’est quoi ? Quelques retours d’expérience Pas qu’une histoire de code Atelier© OCTO 2012 4
  5. 5. Du vieux code Du code sans test N’importe quel code existant Du code que tu n’as pas écrit Du code qui n’est plus supporté Du code avec des vieilles techno Du code de la version précédente© OCTO 2012 5
  6. 6. Tu peux fuir le code legacy …© OCTO 2012 6
  7. 7. Tu peux maudire le code legacy … © OCTO 2012 7
  8. 8. … Mais en ce moment, beaucoup(beaucoup) de code legacy est en cours d’écriture …© OCTO 2012 8
  9. 9. … Et c’est important car Du code legacy doit encore être étendu Du code legacy doit être corrigé Du code legacy doit changer technologiquement© OCTO 2012 9
  10. 10. © OCTO 2012 TDD 10
  11. 11. Sans les tests, le code a peu de chance d’être de meilleure qualité Les méthodes et les classes s’allongentOn pourrait ajouter des méthodes en testant et en effectuant de la délégation© OCTO 2012 11
  12. 12. « Pour refactorer j’ai besoin d’avoir des testspour mettre des tests en place, j’ai besoin de refactorer … »© OCTO 2012 12
  13. 13. Identifier les éléments que l’on souhaite changer Trouver un point d’entrée Ecrire un test Casser les dépendances Modifier le code© OCTO 2012 13
  14. 14. © OCTO 2012 Sprout class & Sprout Method 14
  15. 15. Pourquoi être si prudent ?Avec une certaine masse de code il est facilede faire des erreurs sans s’en rendre compte Préserver les comportements© OCTO 2012 15
  16. 16. Singleton (variable globale)Instanciation interne (hardcodé (ça casse les tests …)) Code procédurale (c’est long (très) à tester)© OCTO 2012 16
  17. 17. © OCTO 2012 Orange 17
  18. 18. © OCTO 2012 Cadremploi 18
  19. 19. © OCTO 2012 Mediametrie 19
  20. 20. © OCTO 2012 Code Review 20
  21. 21. « Organizations which design systems are constrained toproduce designs which are copiesof the communication structures of these organizations » © OCTO 2012 21
  22. 22. Troisième atelier MailService NoteRetriever Scheduler SchedulerDisplayTimeService Event DayTime Meeting 22
  23. 23. User Story #1“Il ne faut pas pouvoirajouter au schedulerdévénements datés davantaujourdhui. ” 23
  24. 24. User Story #2 “Ignorer les notes dela base qui sont uniquementdesséries despace.” 24
  25. 25. User Story #3“Corriger lanomaliesur le filtrage desbalises HTML.”(ex. <b>Formation TDD</b>Octo) 25

×