Upgrade to Pro — share decks privately, control downloads, hide ads and more …

N'ayez pas peur de refactoriser

N'ayez pas peur de refactoriser

Forum AFUP - 2021

Loulier Guillaume

October 21, 2021
Tweet

More Decks by Loulier Guillaume

Other Decks in Programming

Transcript

  1. Easing
    developers’
    life
    university.sensiolabs.com
    N’ayez pas peur
    de refactoriser
    SensioLabs

    View Slide

  2. Connaissez-
    vous la
    définition de
    la peur?
    SensioLabs

    View Slide

  3. university.sensiolabs.com
    Guillaume Loulier / @Guikingone
    Développeur @SensioLabs
    Amoureux de sport automobile,
    fais un peu de Rust, Blackfire
    tatoué sur le cœur
    Vous lui dites:
    Coucou
    SensioLabs

    View Slide

  4. university.sensiolabs.com
    Sommaire
    SensioLabs
    Vous avez
    dit
    refactoriser?
    En théorie,
    tout va bien
    se passer
    En pratique,
    c’est
    compliqué
    Casser n’est
    pas
    refactoriser
    Questions

    View Slide

  5. Vous avez dit … Peur?

    View Slide

  6. university.sensiolabs.com
    Il y a bien longtemps
    SensioLabs
    Avez-vous entendu parler
    du portail de Chesterton ?
    Refactoriser est une affaire
    de compromis
    Vous ferez souvent des
    cauchemars …
    Mais vous vous ferez aussi
    des amis

    View Slide

  7. university.sensiolabs.com
    Hellcome
    SensioLabs
    Nous refactorisons quand
    quelque chose casse
    Cela coûte de l’argent, de la
    sueur et du temps
    Personne ne veut en parler
    ou ne s’en préoccupe

    View Slide

  8. university.sensiolabs.com
    De l’art d’être
    fragile
    SensioLabs
    Robert C. Martin
    You see,
    programmers tend
    to be arrogant, self-
    absorbed introverts.
    We didn’t get into
    this business
    because we like
    people.
    Nous tolérons mal les
    échecs
    Souvent, nous blâmons les
    autres
    Demander de l’aide aux
    collègues nous semble
    coûteux et inutile
    Que se passe t-il si un
    « sachant » s’en va?

    View Slide

  9. Oui mais tout
    ça, c’est
    théorique ?

    View Slide

  10. university.sensiolabs.com
    Prenons de la hauteur
    SensioLabs
    Idée Implémentation Tests Pré-production Production
    Idée Implémentation Tests Pré-production Production

    View Slide

  11. university.sensiolabs.com
    Parlons peu, parlons
    mieux
    SensioLabs
    Quel est l’état du produit ?
    Avons-nous trouvé des bugs ?
    Le client a t-il des priorités ?
    Pouvons-nous améliorer quelque
    chose ?
    Et l’infrastructure ?
    Benjamin Franklin
    If you fail to plan,
    you’re planning to
    fail!
    Idée Implémentation Tests Pré-production Production

    View Slide

  12. university.sensiolabs.com
    Faire du sale mais
    le faire vite
    SensioLabs
    To write clean code,
    you must first write
    dirtycode and then
    cleanit.
    Robert C. Martin
    Idée Implémentation Tests Pré-production Production
    Est-ce un bug ?
    Pouvons-nous améliorer
    cette dépendance ?
    Et si quelque chose casse ?
    Développer, livrer, vite

    View Slide

  13. university.sensiolabs.com
    Douter revient à
    tester
    SensioLabs
    Program testing can
    be used to show the
    presence of bugs,
    but never to show
    their absence!
    Edsger W. Dijkstra
    Idée Implémentation Tests Pré-production Production
    Est-ce que tout fonctionne ?
    Et si le formulaire change ?
    Est si telle API est
    indisponible ?
    Tester, c’est douter… Des
    autres

    View Slide

  14. university.sensiolabs.com
    Reculer pour
    sauter moins loin
    SensioLabs
    Et si je clique ici ?
    Et les tests de montées en
    charge ?
    Les performances sont-
    elles améliorées ?
    Avons-nous documenté
    cette fonctionnalité ?
    If a change to the
    requirements breaks
    your architecture,
    then your
    architecture sucks.
    Robert C. Martin
    Idée Développement Tests Pré-production Production

    View Slide

  15. university.sensiolabs.com
    La MEP peut
    attendre
    SensioLabs
    EdsgerW. Dijkstra
    Simplicityis
    prerequisite for
    reliability.
    L’application reste t-elle
    disponible ? Performante ?
    Avons-nous amélioré
    l’expérience utilisateur ?
    Récupérons-nous de
    nouveaux utilisateurs ?
    Les fonctionnalités sont-
    elles disponibles ?
    Idée Développement Tests Pré-production Production

    View Slide

  16. La théorie,
    c’est théorique

    View Slide

  17. university.sensiolabs.com
    Livre III
    SensioLabs
    Idée
    Implémentation
    Tests
    Implémentation
    Tests
    Pré-production
    Idée
    Implémentation
    Pré-production
    Bien mais on
    livrequand ?
    Mieux mais quid
    des utilisateurs
    finaux ?
    Mieux mais …
    Et les
    performances?
    Idée
    Implémentation
    Production
    Bien mieux mais
    … Les tests?

    View Slide

  18. university.sensiolabs.com
    Tu parles charles
    SensioLabs
    Idée
    Implémentation
    Tests
    Et si les performances
    déclinent ?
    Quid du retour sur
    investissement ?
    Amélioration ? Régression ?
    Qui sait ?
    Idée Développement Tests Pré-production Production

    View Slide

  19. university.sensiolabs.com
    Contrôler les entrées /
    sorties ?
    Echec de planification ?
    Quid de la vision produit ?
    Réfléchir, c’est
    ralentir
    SensioLabs
    Implémentation
    Tests
    Pré-production
    Idée Développement Tests Pré-production Production

    View Slide

  20. university.sensiolabs.com
    Les performances ? Non ?
    Tester, c’est surfait ?
    Quid de la dette technique ?
    Et si j’outrepasse ce bouton ?
    Erreur 418
    SensioLabs
    Idée
    Implémentation
    Pré-production
    Idée Implémentation Tests Pré-production Production

    View Slide

  21. university.sensiolabs.com
    Et si une régression survient ?
    Surprise, un bug sauvage ?
    Automatisons les tests ?
    Documentons-nous assez ?
    On ne déploie
    qu’une fois
    SensioLabs
    Idée
    Implémentation
    Production
    Idée Implémentation Tests Pré-production Production

    View Slide

  22. Et sinon, tu as
    des solutions ?

    View Slide

  23. university.sensiolabs.com
    RIPP, 1000mg
    SensioLabs
    Acronyme facile pour “Rector,
    Infection, PHPStan / Psalm”
    Pensé autour de l’idée « Autant
    automatiser ce qui est
    laborieux »
    3 prises par jour, avec des
    projets compliqués

    View Slide

  24. university.sensiolabs.com
    RIPPétons-nous
    SensioLabs
    Avez-vous entendus parler de
    « Continuous Refactoring » ?
    Pensée pour les projets anciens
    comme modernes
    Planifier avant d’agir
    Sécuriser, structurer,
    automatiser et livrer
    Static
    analysis
    Tests
    Automated
    refactoring
    Profiling
    Security
    analysis
    Monitoring

    View Slide

  25. university.sensiolabs.com
    Un nouvel espoir
    SensioLabs
    Snyk
    Blackfire
    Deptrac/ PHPat
    / Arkitect
    CI / Git
    E2E
    Refactoring
    Security
    Performances profiling
    Static analysis
    Unit tests + mutation testing
    Architecture
    Rector
    PHPStan / Psalm
    Infection
    Cypress
    RIPP

    View Slide

  26. university.sensiolabs.com
    Vends-moi ce
    refactoring
    SensioLabs
    Permet de mieux gérer
    l’évolution d’un projet
    Améliore les cycles de
    développement
    Mets la qualité, l’architecture et
    la correction de bugs en avant
    Et l’argent ?

    View Slide

  27. university.sensiolabs.com
    C’est un marathon et
    non un sprint(f)
    Refactoriserne rends pas beauet ne fait
    pas revenir l’être aimé.
    Vous serez mis devant vos responsabilités
    mais vous en apprendrezplus sur vouset
    le projet.
    Au final, votre patience sera testée, arrêtez
    d’y réfléchiret refactorisez!
    SensioLabs Guillaume Loulier, Afup2021, 10h (àpeuprès)

    View Slide

  28. C’est tout
    Des questions ?

    View Slide

  29. university.sensiolabs.com
    Envie de donner un avis ?
    Envie de discuter ? @Guikingone
    Pas si vite
    SensioLabs
    SensioLabs

    View Slide