Ce diaporama a bien été signalé.
Nous utilisons votre profil LinkedIn et vos données d’activité pour vous proposer des publicités personnalisées et pertinentes. Vous pouvez changer vos préférences de publicités à tout moment.
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 …


© OCT...
… 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
           ...
Du vieux code
                Du code sans test
           N’importe quel code existant
           Du code que tu n’as pas...
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é
          ...
© 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’allongen...
« Pour refactorer j’ai besoin
      d’avoir des tests
pour mettre des tests en place,
          j’ai besoin
      de refac...
Identifier les éléments que l’on
       souhaite changer
   Trouver un point d’entrée
          Ecrire un test
    Casser ...
© 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
    ...
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 to
produce designs which are copies
of the communication structure...
Troisième atelier

   MailService            NoteRetriever

              Scheduler

                          SchedulerDi...
User Story #1


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



                ...
User Story #2


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



                              ...
User Story #3


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

(ex. <b>Formation TDD</b>
Octo)
                 ...
Prochain SlideShare
Chargement dans…5
×

sur

Working effectively with legacy code Slide 1 Working effectively with legacy code Slide 2 Working effectively with legacy code Slide 3 Working effectively with legacy code Slide 4 Working effectively with legacy code Slide 5 Working effectively with legacy code Slide 6 Working effectively with legacy code Slide 7 Working effectively with legacy code Slide 8 Working effectively with legacy code Slide 9 Working effectively with legacy code Slide 10 Working effectively with legacy code Slide 11 Working effectively with legacy code Slide 12 Working effectively with legacy code Slide 13 Working effectively with legacy code Slide 14 Working effectively with legacy code Slide 15 Working effectively with legacy code Slide 16 Working effectively with legacy code Slide 17 Working effectively with legacy code Slide 18 Working effectively with legacy code Slide 19 Working effectively with legacy code Slide 20 Working effectively with legacy code Slide 21 Working effectively with legacy code Slide 22 Working effectively with legacy code Slide 23 Working effectively with legacy code Slide 24 Working effectively with legacy code Slide 25
  • Soyez le premier à aimer ceci

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’allongent On 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 tests pour 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 facile de 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 to produce designs which are copies of the communication structures of these organizations » © OCTO 2012 21
  22. 22. Troisième atelier MailService NoteRetriever Scheduler SchedulerDisplay TimeService Event DayTime Meeting 22
  23. 23. User Story #1 “Il ne faut pas pouvoir ajouter au scheduler d'événements datés d'avant aujourd'hui. ” 23
  24. 24. User Story #2 “Ignorer les notes de la base qui sont uniquement des séries d'espace.” 24
  25. 25. User Story #3 “Corriger l'anomalie sur le filtrage des balises HTML.” (ex. <b>Formation TDD</b> Octo) 25

Vues

Nombre de vues

1 982

Sur Slideshare

0

À partir des intégrations

0

Nombre d'intégrations

4

Actions

Téléchargements

1

Partages

0

Commentaires

0

Mentions J'aime

0

×