SlideShare une entreprise Scribd logo
1  sur  22
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                    2
… mais en vrai on se
         retrouve souvent à
       développer sur du code
              Legacy…


© OCTO 2012                     3
Du code que tu n’as pas écrit
             Du code sans test
               Du vieux code
       N’importe quel langage existant
       Du code qui n’est plus supporté
      Du code avec des vieilles techno
      Du code de la version précédente


© OCTO 2012                              4
Tu peux fuir le code legacy …
© OCTO 2012                     5
Tu peux maudire le code
© OCTO 2012
               legacy …           6
… Mais en ce moment, beaucoup
(beaucoup) de code legacy est en
       cours d’écriture …
 © OCTO 2012                   7
… Et c’est important car
Du code legacy doit encore être étendu
   Du code legacy doit être corrigé
     Du code legacy doit changer
         technologiquement



                                         8
© OCTO 2012
              TDD   9
« Pour refactorer j’ai besoin
     d’avoir des tests
  pour mettre des tests en
     place, j’ai besoin
     de refactorer … »

© OCTO 2012                     10
Live Coding   11
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                   12
Sprout class & Sprout
        Method
© OCTO 2012              13
Pourquoi être si prudent ?
Avec une certaine masse de code il est facile
de faire des erreurs sans s’en rendre compte
        Préserver les comportements
 © OCTO 2012                                14
Singleton (variable globale)
 Instanciation interne (hardcodé
      (ça casse les tests …))
Code procédural (c’est long (très)
             à tester)

                                 15
Collective Ownership   16
© OCTO 2012   Boy Scout Rule   17
© OCTO 2012
              Retrospective   18
© OCTO 2012
              Code Review   19
Coding Dojo   20
« Organizations which design
systems are constrained to produce
  designs which are copies of the
communication structures of these
         organizations »
 © OCTO 2012                     21
Questions ?




              22

Contenu connexe

En vedette

Treinamento em trabalho em altura e prevenção de quedas
Treinamento em trabalho em  altura e prevenção de quedas Treinamento em trabalho em  altura e prevenção de quedas
Treinamento em trabalho em altura e prevenção de quedas Alexandre Roque
 
California Black Chamber of Commerce Presentation by Dr. Rex Fortune
California Black Chamber of Commerce Presentation by Dr. Rex FortuneCalifornia Black Chamber of Commerce Presentation by Dr. Rex Fortune
California Black Chamber of Commerce Presentation by Dr. Rex FortuneRex Fortune
 
Engentank recomendação de investimento - metalúrgica vasos de pressão - 201...
Engentank   recomendação de investimento - metalúrgica vasos de pressão - 201...Engentank   recomendação de investimento - metalúrgica vasos de pressão - 201...
Engentank recomendação de investimento - metalúrgica vasos de pressão - 201...Fernando Misato
 
Fordham_PlanningPortfolio
Fordham_PlanningPortfolioFordham_PlanningPortfolio
Fordham_PlanningPortfolioKyle Fordham
 
クラウド版も開発が進む LibreOfficeの最新動向と導入事例の紹介
クラウド版も開発が進む LibreOfficeの最新動向と導入事例の紹介クラウド版も開発が進む LibreOfficeの最新動向と導入事例の紹介
クラウド版も開発が進む LibreOfficeの最新動向と導入事例の紹介Shinji Enoki
 
Administração do tempo JTekT
Administração do tempo   JTekTAdministração do tempo   JTekT
Administração do tempo JTekTAntonio Moreira
 
Agilité et modèles de changement
Agilité et modèles de changementAgilité et modèles de changement
Agilité et modèles de changementMathieu Gandin
 
Sistem informasi management
Sistem informasi managementSistem informasi management
Sistem informasi managementrizki mutmainna
 

En vedette (10)

Treinamento em trabalho em altura e prevenção de quedas
Treinamento em trabalho em  altura e prevenção de quedas Treinamento em trabalho em  altura e prevenção de quedas
Treinamento em trabalho em altura e prevenção de quedas
 
California Black Chamber of Commerce Presentation by Dr. Rex Fortune
California Black Chamber of Commerce Presentation by Dr. Rex FortuneCalifornia Black Chamber of Commerce Presentation by Dr. Rex Fortune
California Black Chamber of Commerce Presentation by Dr. Rex Fortune
 
Engentank recomendação de investimento - metalúrgica vasos de pressão - 201...
Engentank   recomendação de investimento - metalúrgica vasos de pressão - 201...Engentank   recomendação de investimento - metalúrgica vasos de pressão - 201...
Engentank recomendação de investimento - metalúrgica vasos de pressão - 201...
 
Fordham_PlanningPortfolio
Fordham_PlanningPortfolioFordham_PlanningPortfolio
Fordham_PlanningPortfolio
 
クラウド版も開発が進む LibreOfficeの最新動向と導入事例の紹介
クラウド版も開発が進む LibreOfficeの最新動向と導入事例の紹介クラウド版も開発が進む LibreOfficeの最新動向と導入事例の紹介
クラウド版も開発が進む LibreOfficeの最新動向と導入事例の紹介
 
Présentation kanban
Présentation kanbanPrésentation kanban
Présentation kanban
 
Administração do tempo JTekT
Administração do tempo   JTekTAdministração do tempo   JTekT
Administração do tempo JTekT
 
Agilité et modèles de changement
Agilité et modèles de changementAgilité et modèles de changement
Agilité et modèles de changement
 
Sistem informasi management
Sistem informasi managementSistem informasi management
Sistem informasi management
 
مهارات التقديم و العرض
مهارات التقديم و العرضمهارات التقديم و العرض
مهارات التقديم و العرض
 

Similaire à Working effectively with legacy code

La Duck Conf - Les fakes news du low-code
La Duck Conf - Les fakes news du low-code La Duck Conf - Les fakes news du low-code
La Duck Conf - Les fakes news du low-code OCTO Technology
 
Live code iOS
Live code iOSLive code iOS
Live code iOSmhausherr
 
Les pratiques des geants du web
Les pratiques des geants du webLes pratiques des geants du web
Les pratiques des geants du webStephen PERIN
 
OCTO - Les pratiques des geants du web
OCTO - Les pratiques des geants du webOCTO - Les pratiques des geants du web
OCTO - Les pratiques des geants du webOCTO Technology
 
OCTO 2012 : Les pratiques des geants du web
OCTO 2012 : Les pratiques des geants du web OCTO 2012 : Les pratiques des geants du web
OCTO 2012 : Les pratiques des geants du web OCTO Technology
 
Faire du-code-centre-sur-l-humain devoxx
Faire du-code-centre-sur-l-humain devoxxFaire du-code-centre-sur-l-humain devoxx
Faire du-code-centre-sur-l-humain devoxxVISEO
 
Jug Lausanne Android Janvier2013
Jug Lausanne Android Janvier2013Jug Lausanne Android Janvier2013
Jug Lausanne Android Janvier2013jeromevdl
 
No Code et SEO sont ils compatibles ? Philippe Yonnet Neper
No Code et SEO sont ils compatibles ? Philippe Yonnet NeperNo Code et SEO sont ils compatibles ? Philippe Yonnet Neper
No Code et SEO sont ils compatibles ? Philippe Yonnet NeperPhilippe YONNET
 
La Duck Conf - Continuous Security : Secure a DevOps World!
La Duck Conf - Continuous Security : Secure a DevOps World!La Duck Conf - Continuous Security : Secure a DevOps World!
La Duck Conf - Continuous Security : Secure a DevOps World!OCTO Technology
 
20131024 qualité de code et sonar - mug lyon
20131024   qualité de code et sonar - mug lyon20131024   qualité de code et sonar - mug lyon
20131024 qualité de code et sonar - mug lyonClement Bouillier
 
JUGL 2009 - Introduction Groovy/Grails
JUGL 2009 - Introduction Groovy/GrailsJUGL 2009 - Introduction Groovy/Grails
JUGL 2009 - Introduction Groovy/Grailscyrilpicat
 
Soirée Qualité Logicielle avec Sonar
Soirée Qualité Logicielle avec SonarSoirée Qualité Logicielle avec Sonar
Soirée Qualité Logicielle avec SonarElsassJUG
 
Innover sans contrainte, intégrer sans rupture
Innover sans contrainte, intégrer sans ruptureInnover sans contrainte, intégrer sans rupture
Innover sans contrainte, intégrer sans ruptureGuillaume Laforge
 
Entity Framework 7 : nouvelle version majeure d’Entity Framework
Entity Framework 7 : nouvelle version majeure d’Entity FrameworkEntity Framework 7 : nouvelle version majeure d’Entity Framework
Entity Framework 7 : nouvelle version majeure d’Entity FrameworkMicrosoft
 
La Duck Conf - Une équipe plateforme qui délivre
La Duck Conf - Une équipe plateforme qui délivreLa Duck Conf - Une équipe plateforme qui délivre
La Duck Conf - Une équipe plateforme qui délivreOCTO Technology
 
Sophiacom au salon Le Mobile 2.0 2011
Sophiacom au salon Le Mobile 2.0 2011Sophiacom au salon Le Mobile 2.0 2011
Sophiacom au salon Le Mobile 2.0 2011Sophiacom
 
L’open-source au cœur des magasins d’applications
L’open-source au cœur des magasins d’applicationsL’open-source au cœur des magasins d’applications
L’open-source au cœur des magasins d’applicationsLaFrenchMobile
 

Similaire à Working effectively with legacy code (20)

La Duck Conf - Les fakes news du low-code
La Duck Conf - Les fakes news du low-code La Duck Conf - Les fakes news du low-code
La Duck Conf - Les fakes news du low-code
 
Live code iOS
Live code iOSLive code iOS
Live code iOS
 
Les pratiques des geants du web
Les pratiques des geants du webLes pratiques des geants du web
Les pratiques des geants du web
 
OCTO - Les pratiques des geants du web
OCTO - Les pratiques des geants du webOCTO - Les pratiques des geants du web
OCTO - Les pratiques des geants du web
 
OCTO 2012 : Les pratiques des geants du web
OCTO 2012 : Les pratiques des geants du web OCTO 2012 : Les pratiques des geants du web
OCTO 2012 : Les pratiques des geants du web
 
La Rochelle workshop 2016
La Rochelle workshop 2016La Rochelle workshop 2016
La Rochelle workshop 2016
 
Faire du-code-centre-sur-l-humain devoxx
Faire du-code-centre-sur-l-humain devoxxFaire du-code-centre-sur-l-humain devoxx
Faire du-code-centre-sur-l-humain devoxx
 
Jug Lausanne Android Janvier2013
Jug Lausanne Android Janvier2013Jug Lausanne Android Janvier2013
Jug Lausanne Android Janvier2013
 
No Code et SEO sont ils compatibles ? Philippe Yonnet Neper
No Code et SEO sont ils compatibles ? Philippe Yonnet NeperNo Code et SEO sont ils compatibles ? Philippe Yonnet Neper
No Code et SEO sont ils compatibles ? Philippe Yonnet Neper
 
La Duck Conf - Continuous Security : Secure a DevOps World!
La Duck Conf - Continuous Security : Secure a DevOps World!La Duck Conf - Continuous Security : Secure a DevOps World!
La Duck Conf - Continuous Security : Secure a DevOps World!
 
20131024 qualité de code et sonar - mug lyon
20131024   qualité de code et sonar - mug lyon20131024   qualité de code et sonar - mug lyon
20131024 qualité de code et sonar - mug lyon
 
JUGL 2009 - Introduction Groovy/Grails
JUGL 2009 - Introduction Groovy/GrailsJUGL 2009 - Introduction Groovy/Grails
JUGL 2009 - Introduction Groovy/Grails
 
Soirée Qualité Logicielle avec Sonar
Soirée Qualité Logicielle avec SonarSoirée Qualité Logicielle avec Sonar
Soirée Qualité Logicielle avec Sonar
 
Innover sans contrainte, intégrer sans rupture
Innover sans contrainte, intégrer sans ruptureInnover sans contrainte, intégrer sans rupture
Innover sans contrainte, intégrer sans rupture
 
Entity Framework 7 : nouvelle version majeure d’Entity Framework
Entity Framework 7 : nouvelle version majeure d’Entity FrameworkEntity Framework 7 : nouvelle version majeure d’Entity Framework
Entity Framework 7 : nouvelle version majeure d’Entity Framework
 
No code low code
No code low codeNo code low code
No code low code
 
La Duck Conf - Une équipe plateforme qui délivre
La Duck Conf - Une équipe plateforme qui délivreLa Duck Conf - Une équipe plateforme qui délivre
La Duck Conf - Une équipe plateforme qui délivre
 
Visual studio 2012
Visual studio 2012Visual studio 2012
Visual studio 2012
 
Sophiacom au salon Le Mobile 2.0 2011
Sophiacom au salon Le Mobile 2.0 2011Sophiacom au salon Le Mobile 2.0 2011
Sophiacom au salon Le Mobile 2.0 2011
 
L’open-source au cœur des magasins d’applications
L’open-source au cœur des magasins d’applicationsL’open-source au cœur des magasins d’applications
L’open-source au cœur des magasins d’applications
 

Working effectively with legacy code

  • 1. Développer efficacement avec du code legacy Mathieu Gandin @octomga
  • 2. La plupart du temps on se retrouve à développer sur une application dont le code est relativement propre … © OCTO 2012 2
  • 3. … mais en vrai on se retrouve souvent à développer sur du code Legacy… © OCTO 2012 3
  • 4. Du code que tu n’as pas écrit Du code sans test Du vieux code N’importe quel langage existant Du code qui n’est plus supporté Du code avec des vieilles techno Du code de la version précédente © OCTO 2012 4
  • 5. Tu peux fuir le code legacy … © OCTO 2012 5
  • 6. Tu peux maudire le code © OCTO 2012 legacy … 6
  • 7. … Mais en ce moment, beaucoup (beaucoup) de code legacy est en cours d’écriture … © OCTO 2012 7
  • 8. … Et c’est important car Du code legacy doit encore être étendu Du code legacy doit être corrigé Du code legacy doit changer technologiquement 8
  • 9. © OCTO 2012 TDD 9
  • 10. « Pour refactorer j’ai besoin d’avoir des tests pour mettre des tests en place, j’ai besoin de refactorer … » © OCTO 2012 10
  • 12. 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 12
  • 13. Sprout class & Sprout Method © OCTO 2012 13
  • 14. Pourquoi être si prudent ? Avec une certaine masse de code il est facile de faire des erreurs sans s’en rendre compte Préserver les comportements © OCTO 2012 14
  • 15. Singleton (variable globale) Instanciation interne (hardcodé (ça casse les tests …)) Code procédural (c’est long (très) à tester) 15
  • 17. © OCTO 2012 Boy Scout Rule 17
  • 18. © OCTO 2012 Retrospective 18
  • 19. © OCTO 2012 Code Review 19
  • 21. « Organizations which design systems are constrained to produce designs which are copies of the communication structures of these organizations » © OCTO 2012 21