Working with Legacy Code par José Paumard

Principes et pratique du refactoring, Clean Code, TDD

  • Référence

    MP-WWLC

  • Durée

    2 jours (14 h)

  • Prix par personne HT

    1 450 € HT

Description

Régulièrement, les développeurs doivent intervenir sur des bases de code anciennes, peu ou mal testées, pour lesquelles ils n’ont qu’une connaissance limitée du métier. Ce sont des situations où toute intervention, si elle n’est pas faite avec méthode, risque d’introduire des régressions dans les fonctionnalités de l’application. 

Au travers des méthodologies du Software Craftsmanship, vous apprendrez comment appréhender de telles bases de code, comment sécuriser vos interventions à l’aide de tests, comment faire émerger les intentions métier, comment faire évoluer les fonctionnalités, et comment vérifier que les modifications apportées n’ont introduit aucune régression dans les fonctionnalités existantes. 

Vous apprendrez à tirer parti des fonctionnalités de refactoring de votre IDE, à en connaître les limites, et à évaluer la qualité des tests unitaires que vous aurez écrit. 

A l’issue de cette formation, vous serez en capacité de fiabiliser votre code, afin de le rendre plus robuste. Cela vous simplifiera l’intégration de nouveaux développeurs et vous facilitera les relations avec les métiers en charge de l’application. 

Cette formation se compose de 25% de théorie, où le formateur explique les concepts et les techniques, en s’appuyant sur un support de cours, et de 75% de mise en pratique au travers de katas, afin de mettre en œuvre immédiatement les concepts appris.

A propos de José Paumard :

José est Java Developer Advocate au Java Platform Group chez Oracle. Anciennement maître de conférences à l’Université Sorbonne Paris Nord pendant 25 ans, il est Java Champion, Rockstar JavaOne, speaker régulier dans de nombreuses conférences : Devoxx (France, Belgique, UK), JavaOne, Oracle Code One, DevNexus, JFokus. Il a été consultant en entreprise pendant 25 ans, fortement investi en qualité des applications logicielles et Software Craftsmanship depuis 2015 au travers de missions de coaching et de formation auprès de plusieurs sociétés (SGCIB, Renault, Crédit Agricole, Groupama, Accenture). La formation Software Craftsmanship qu’il a créée, commercialisée par Oxiane Institute, est suivie par une centaine de développeurs chaque année.

Objectifs pédagogiques

  • Comprendre le rôle des tests dans le processus de développement des logiciels
  • Comprendre les enjeux de l’écriture de tests automatisés et le coût de la mise en production de code non testé automatiquement
  • Maîtriser l’écriture de tests automatisés, unitaires et tests d’intégration
  • Comprendre les principes SOLID
  • Maîtriser les principes et patterns du « clean code » en programmation objet
  • Maîtriser les outils de frameworks de test
  • Comprendre le principe du travail à partir de katas
  • Comprendre les pratiques de l’eXtreme programming : pair programming, coding dojos
  • Comprendre les stratégies d’écriture de tests sur du code existant
  • Comprendre l’utilité du code coverage et du mutation testing pour améliorer la qualité d’une base de tests
  • Maîtriser les outils de refactoring proposés par les IDE
  • Créer un plan de refactoring par l’application des principes SOLID

Public cible

La formation s’adresse à des développeurs Java expérimentés ayant une bonne connaissance du langage et de ses API fondamentales. Une première expérience dans l’écriture de tests sur du code legacy est un avantage

Pré-requis

  • Maîtriser le développement objet et ses concepts
  • Savoir écrire des tests unitaires
  • Avoir une première pratique du TDD est un plus

Modalités d’évaluation

L’évaluation des acquis se fait tout au long de la session au travers d’ateliers de mise en pratique des notions et concepts abordés pendant la formation.

Méthodes pédagogiques

Aucune installation sur les postes n’est à prévoir. L’ensemble des exercices se fera sur la machine du formateur, ensemble, en mob programming.

A l’issue de la formation, le formateur remettra aux participants l’ensemble du code qu’ils auront écrit.

Programme de la formation

Introduction

  • Définition du code Legacy
  • Pratiques de développement : Test Driven Development
  • Cycles de développement
  • Définition de la Dette technique

Principes SOLID

  • Importance du respect des principes SOLID
  • Single Responsibility Principle
  • Open Closed Principle
  • Liskov Substitution Principle
  • Interface Segregation Principle
  • Dependency Inversion Principle 

Principes de l’eXtreme Programming

  • Pair programming, mob programming
  • Code review

Principes du Refactoring et du travail sur code legacy

  • Ecriture de tests sur code legacy
  • Evaluation de la qualité des tests : code coverage et Mutation Testing
  • Ce qui ne doit impérativement pas être modifié
  • Identification des “code smells”
  • Définition des étapes du refactoring (classification de M. Fowler)
  • Les opérations du refactoring, et leurs implémentations dans les IDE
  • Préparer le code pour les évolutions et les corrections

Kata Movie Rental

  • Ecriture des tests
  • Refactoring : Rename variable, Rename Field
  • Application du Single Responsibility Principle : Extract Method, Slide Statements
  • Application de l’Open Closed Principle : pattern strategy
  • Utilisation de l’IDE pour appliquer les opérations de refactoring

Kata Gilded Rose

  • Ecriture des tests
  • Evaluation de la qualité des tests : code coverage et Mutation Testing
  • Simplification des arbres de décision : Extract Method
  • Utilisation de l’IDE pour simplifier les tests imbriqués

Kata Device Driver

  • Ecriture des tests
  • Ecriture de Mocks

Kata Vistamboire

  • Refactoring : Extract Class
  • Déplacement des tests unitaires pour conserver la cohésion 
  • Implémenter de nouvelles fonctionnalités

Qualité

Mise en ligne : septembre 2023
Cette formation est accessible aux personnes en situation de handicap, nous contacter en cas de besoin d’informations complémentaires.

Programme mis à jour le