SlideShare une entreprise Scribd logo
1  sur  25
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 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


© OCTO 2012                              4
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
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 code legacy doit changer
               technologiquement



© OCTO 2012                                    9
© 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’allongent
On pourrait ajouter des méthodes en testant
      et en effectuant de la délégation




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

© OCTO 2012                       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                        13
© OCTO 2012   Sprout class & Sprout Method   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                                     15
Singleton (variable globale)
Instanciation interne (hardcodé
      (ça casse les tests …))
  Code procédurale (c’est long
          (très) à tester)

© OCTO 2012                       16
© OCTO 2012   Orange   17
© OCTO 2012   Cadremploi   18
© OCTO 2012   Mediametrie   19
© OCTO 2012
              Code Review   20
« Organizations which design
   systems are constrained to
produce designs which are copies
of the communication structures
     of these organizations »

 © OCTO 2012                   21
Troisième atelier

   MailService            NoteRetriever

              Scheduler

                          SchedulerDisplay
TimeService
                      Event

 DayTime
                                    Meeting
                                                  22
User Story #1


“Il ne faut pas pouvoir
ajouter au scheduler
d'événements datés d'avant
aujourd'hui. ”



                                    23
User Story #2


 “Ignorer les notes de
la base qui sont uniquement
des
séries d'espace.”



                                    24
User Story #3


“Corriger l'anomalie
sur le filtrage des
balises HTML.”

(ex. <b>Formation TDD</b>
Octo)
                                       25

Contenu connexe

En vedette

Définir un cadre méthodologique
Définir un cadre méthodologiqueDéfinir un cadre méthodologique
Définir un cadre méthodologiqueMathieu Gandin
 
Pano vũng tàu unique ads
Pano vũng tàu unique adsPano vũng tàu unique ads
Pano vũng tàu unique adsminhnghiemunique
 
Guía de autores - Revista Andina de Estudios Políticos
Guía de autores - Revista Andina de Estudios PolíticosGuía de autores - Revista Andina de Estudios Políticos
Guía de autores - Revista Andina de Estudios PolíticosJosé Manuel Mejía Villena
 
Resumo do mês de Fevereiro de 2016 - O Encantador de Clientes de Eloi Zanetti
Resumo do mês de Fevereiro de 2016 - O Encantador de Clientes de Eloi ZanettiResumo do mês de Fevereiro de 2016 - O Encantador de Clientes de Eloi Zanetti
Resumo do mês de Fevereiro de 2016 - O Encantador de Clientes de Eloi ZanettiThiago Compan
 
Building LibreOffice local community in Japan through event handling
Building LibreOffice local community in Japan through event handlingBuilding LibreOffice local community in Japan through event handling
Building LibreOffice local community in Japan through event handlingShinji Enoki
 
Julia最新情報 2015
Julia最新情報 2015Julia最新情報 2015
Julia最新情報 2015Kenta Sato
 
SeekR Annual Search Trends Report 2015
SeekR Annual Search Trends Report 2015SeekR Annual Search Trends Report 2015
SeekR Annual Search Trends Report 2015Takekatsu Hiramura
 
Lazada vs Matahari Mall Business Models
Lazada vs Matahari Mall Business ModelsLazada vs Matahari Mall Business Models
Lazada vs Matahari Mall Business ModelsIndah Maryani
 
SE2016 Company Development Vadym Gorenko "How to pass the death valley"
SE2016 Company Development Vadym Gorenko  "How to pass the death valley"SE2016 Company Development Vadym Gorenko  "How to pass the death valley"
SE2016 Company Development Vadym Gorenko "How to pass the death valley"Inhacking
 
SE2016 Management Mikhail Lebedinkiy "iAIST the first pure ukrainian corporat...
SE2016 Management Mikhail Lebedinkiy "iAIST the first pure ukrainian corporat...SE2016 Management Mikhail Lebedinkiy "iAIST the first pure ukrainian corporat...
SE2016 Management Mikhail Lebedinkiy "iAIST the first pure ukrainian corporat...Inhacking
 
Julia Computing - an alternative to Hadoop
Julia Computing - an alternative to HadoopJulia Computing - an alternative to Hadoop
Julia Computing - an alternative to HadoopShaurya Shekhar
 
وحي من جهة مصر القس كرم لامعى - ونبر الكنيسه الانجيليه بالابراهيميه
وحي من جهة مصر    القس كرم لامعى  - ونبر الكنيسه الانجيليه بالابراهيميهوحي من جهة مصر    القس كرم لامعى  - ونبر الكنيسه الانجيليه بالابراهيميه
وحي من جهة مصر القس كرم لامعى - ونبر الكنيسه الانجيليه بالابراهيميهIbrahimia Church Ftriends
 
01 2015 24 nov. دروس من حياة يوسف (1). ق. شكري شاكر
01  2015 24 nov. دروس من حياة يوسف (1). ق. شكري شاكر 01  2015 24 nov. دروس من حياة يوسف (1). ق. شكري شاكر
01 2015 24 nov. دروس من حياة يوسف (1). ق. شكري شاكر Ibrahimia Church Ftriends
 
اقرار الايمان الانجيلى نؤمن فى الله ماده 1
اقرار الايمان الانجيلى   نؤمن فى الله ماده 1اقرار الايمان الانجيلى   نؤمن فى الله ماده 1
اقرار الايمان الانجيلى نؤمن فى الله ماده 1Ibrahimia Church Ftriends
 

En vedette (20)

07 03-2016
07 03-201607 03-2016
07 03-2016
 
Définir un cadre méthodologique
Définir un cadre méthodologiqueDéfinir un cadre méthodologique
Définir un cadre méthodologique
 
23 02-2016
23 02-201623 02-2016
23 02-2016
 
15 03-2016
15 03-201615 03-2016
15 03-2016
 
13.16 05-2016
13.16 05-201613.16 05-2016
13.16 05-2016
 
04 04-16
04 04-1604 04-16
04 04-16
 
Pano vũng tàu unique ads
Pano vũng tàu unique adsPano vũng tàu unique ads
Pano vũng tàu unique ads
 
Guía de autores - Revista Andina de Estudios Políticos
Guía de autores - Revista Andina de Estudios PolíticosGuía de autores - Revista Andina de Estudios Políticos
Guía de autores - Revista Andina de Estudios Políticos
 
Resumo do mês de Fevereiro de 2016 - O Encantador de Clientes de Eloi Zanetti
Resumo do mês de Fevereiro de 2016 - O Encantador de Clientes de Eloi ZanettiResumo do mês de Fevereiro de 2016 - O Encantador de Clientes de Eloi Zanetti
Resumo do mês de Fevereiro de 2016 - O Encantador de Clientes de Eloi Zanetti
 
Como vender mais usando gestão de pipeline
Como vender mais usando gestão de pipelineComo vender mais usando gestão de pipeline
Como vender mais usando gestão de pipeline
 
Building LibreOffice local community in Japan through event handling
Building LibreOffice local community in Japan through event handlingBuilding LibreOffice local community in Japan through event handling
Building LibreOffice local community in Japan through event handling
 
Julia最新情報 2015
Julia最新情報 2015Julia最新情報 2015
Julia最新情報 2015
 
SeekR Annual Search Trends Report 2015
SeekR Annual Search Trends Report 2015SeekR Annual Search Trends Report 2015
SeekR Annual Search Trends Report 2015
 
Lazada vs Matahari Mall Business Models
Lazada vs Matahari Mall Business ModelsLazada vs Matahari Mall Business Models
Lazada vs Matahari Mall Business Models
 
SE2016 Company Development Vadym Gorenko "How to pass the death valley"
SE2016 Company Development Vadym Gorenko  "How to pass the death valley"SE2016 Company Development Vadym Gorenko  "How to pass the death valley"
SE2016 Company Development Vadym Gorenko "How to pass the death valley"
 
SE2016 Management Mikhail Lebedinkiy "iAIST the first pure ukrainian corporat...
SE2016 Management Mikhail Lebedinkiy "iAIST the first pure ukrainian corporat...SE2016 Management Mikhail Lebedinkiy "iAIST the first pure ukrainian corporat...
SE2016 Management Mikhail Lebedinkiy "iAIST the first pure ukrainian corporat...
 
Julia Computing - an alternative to Hadoop
Julia Computing - an alternative to HadoopJulia Computing - an alternative to Hadoop
Julia Computing - an alternative to Hadoop
 
وحي من جهة مصر القس كرم لامعى - ونبر الكنيسه الانجيليه بالابراهيميه
وحي من جهة مصر    القس كرم لامعى  - ونبر الكنيسه الانجيليه بالابراهيميهوحي من جهة مصر    القس كرم لامعى  - ونبر الكنيسه الانجيليه بالابراهيميه
وحي من جهة مصر القس كرم لامعى - ونبر الكنيسه الانجيليه بالابراهيميه
 
01 2015 24 nov. دروس من حياة يوسف (1). ق. شكري شاكر
01  2015 24 nov. دروس من حياة يوسف (1). ق. شكري شاكر 01  2015 24 nov. دروس من حياة يوسف (1). ق. شكري شاكر
01 2015 24 nov. دروس من حياة يوسف (1). ق. شكري شاكر
 
اقرار الايمان الانجيلى نؤمن فى الله ماده 1
اقرار الايمان الانجيلى   نؤمن فى الله ماده 1اقرار الايمان الانجيلى   نؤمن فى الله ماده 1
اقرار الايمان الانجيلى نؤمن فى الله ماده 1
 

Similaire à Working effectively with legacy code

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
 
Les pratiques des geants du web
Les pratiques des geants du webLes pratiques des geants du web
Les pratiques des geants du webStephen PERIN
 
Live code iOS
Live code iOSLive code iOS
Live code iOSmhausherr
 
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
 
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
 
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
 
OCTO Talks - Les IA s'invitent au chevet des développeurs
OCTO Talks - Les IA s'invitent au chevet des développeursOCTO Talks - Les IA s'invitent au chevet des développeurs
OCTO Talks - Les IA s'invitent au chevet des développeursOCTO Technology
 
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
 
Introduction à l'approche ADM de l'OMG
Introduction à l'approche ADM de l'OMGIntroduction à l'approche ADM de l'OMG
Introduction à l'approche ADM de l'OMGOlivier Le Goaër
 
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
 
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
 
Paris Web 2015 - Atelier desendettement javascript
Paris Web 2015 - Atelier desendettement javascriptParis Web 2015 - Atelier desendettement javascript
Paris Web 2015 - Atelier desendettement javascriptMichael Akbaraly
 
Présentation Rex GWT 2.0
Présentation Rex GWT 2.0Présentation Rex GWT 2.0
Présentation Rex GWT 2.0Ippon
 
Petit DéJeuner Industrialisation 13 10 2011 Eurosites
Petit DéJeuner Industrialisation 13 10 2011 EurositesPetit DéJeuner Industrialisation 13 10 2011 Eurosites
Petit DéJeuner Industrialisation 13 10 2011 EurositesHervé Leclerc
 
Quelques conseils sur la migration des modules à Drupal 8. Étude de cas: Node...
Quelques conseils sur la migration des modules à Drupal 8. Étude de cas: Node...Quelques conseils sur la migration des modules à Drupal 8. Étude de cas: Node...
Quelques conseils sur la migration des modules à Drupal 8. Étude de cas: Node...Adrian CID ALMAGUER
 
La Duck Conf - DevOps et Dataviz, un amour impossible ?
La Duck Conf - DevOps et Dataviz, un amour impossible ? La Duck Conf - DevOps et Dataviz, un amour impossible ?
La Duck Conf - DevOps et Dataviz, un amour impossible ? OCTO Technology
 
developpement web framework cms developpement brute
developpement web framework cms developpement brutedeveloppement web framework cms developpement brute
developpement web framework cms developpement bruteYounesOuladSayad1
 

Similaire à Working effectively with legacy code (20)

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
 
Les pratiques des geants du web
Les pratiques des geants du webLes pratiques des geants du web
Les pratiques des geants du web
 
Live code iOS
Live code iOSLive code iOS
Live code iOS
 
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
 
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
 
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
 
OCTO Talks - Les IA s'invitent au chevet des développeurs
OCTO Talks - Les IA s'invitent au chevet des développeursOCTO Talks - Les IA s'invitent au chevet des développeurs
OCTO Talks - Les IA s'invitent au chevet des développeurs
 
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
 
Introduction à l'approche ADM de l'OMG
Introduction à l'approche ADM de l'OMGIntroduction à l'approche ADM de l'OMG
Introduction à l'approche ADM de l'OMG
 
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
 
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!
 
Paris Web 2015 - Atelier desendettement javascript
Paris Web 2015 - Atelier desendettement javascriptParis Web 2015 - Atelier desendettement javascript
Paris Web 2015 - Atelier desendettement javascript
 
Agl2012
Agl2012Agl2012
Agl2012
 
No code low code
No code low codeNo code low code
No code low code
 
Présentation Rex GWT 2.0
Présentation Rex GWT 2.0Présentation Rex GWT 2.0
Présentation Rex GWT 2.0
 
Petit DéJeuner Industrialisation 13 10 2011 Eurosites
Petit DéJeuner Industrialisation 13 10 2011 EurositesPetit DéJeuner Industrialisation 13 10 2011 Eurosites
Petit DéJeuner Industrialisation 13 10 2011 Eurosites
 
Quelques conseils sur la migration des modules à Drupal 8. Étude de cas: Node...
Quelques conseils sur la migration des modules à Drupal 8. Étude de cas: Node...Quelques conseils sur la migration des modules à Drupal 8. Étude de cas: Node...
Quelques conseils sur la migration des modules à Drupal 8. Étude de cas: Node...
 
La Duck Conf - DevOps et Dataviz, un amour impossible ?
La Duck Conf - DevOps et Dataviz, un amour impossible ? La Duck Conf - DevOps et Dataviz, un amour impossible ?
La Duck Conf - DevOps et Dataviz, un amour impossible ?
 
developpement web framework cms developpement brute
developpement web framework cms developpement brutedeveloppement web framework cms developpement brute
developpement web framework cms developpement brute
 

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 on se retrouve aussi à développer sur du code Legacy… © OCTO 2012 3
  • 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. 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. Tu peux fuir le code legacy … © OCTO 2012 6
  • 7. Tu peux maudire le code legacy … © OCTO 2012 7
  • 8. … Mais en ce moment, beaucoup (beaucoup) de code legacy est en cours d’écriture … © OCTO 2012 8
  • 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. © OCTO 2012 TDD 10
  • 11. Sans les tests, le code a peu de chance d’être de meilleure qualité Les méthodes et les classes s’allongent On pourrait ajouter des méthodes en testant et en effectuant de la délégation © OCTO 2012 11
  • 12. « Pour refactorer j’ai besoin d’avoir des tests pour mettre des tests en place, j’ai besoin de refactorer … » © OCTO 2012 12
  • 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. © OCTO 2012 Sprout class & Sprout Method 14
  • 15. 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 15
  • 16. Singleton (variable globale) Instanciation interne (hardcodé (ça casse les tests …)) Code procédurale (c’est long (très) à tester) © OCTO 2012 16
  • 17. © OCTO 2012 Orange 17
  • 18. © OCTO 2012 Cadremploi 18
  • 19. © OCTO 2012 Mediametrie 19
  • 20. © OCTO 2012 Code Review 20
  • 21. « Organizations which design systems are constrained to produce designs which are copies of the communication structures of these organizations » © OCTO 2012 21
  • 22. Troisième atelier MailService NoteRetriever Scheduler SchedulerDisplay TimeService Event DayTime Meeting 22
  • 23. User Story #1 “Il ne faut pas pouvoir ajouter au scheduler d'événements datés d'avant aujourd'hui. ” 23
  • 24. User Story #2 “Ignorer les notes de la base qui sont uniquement des séries d'espace.” 24
  • 25. User Story #3 “Corriger l'anomalie sur le filtrage des balises HTML.” (ex. <b>Formation TDD</b> Octo) 25