• DĂ©veloppement
  • Tool in action
  • Standard
  • 25 min

On touche pas son pĂšre : sortir de l’hĂ©ritage avec la dĂ©lĂ©gation Kotlin

  • Date jeudi
  • Horaire 15h35 Ă  16h00
  • Salle Amphi B

Description

Quand on jouait au loup dans la cour d’école, il y avait une rĂšgle tacite : “on touche pas son pĂšre” — on ne retouche pas celui qui vient de nous toucher, sinon la partie tourne en boucle. En code, beaucoup d’équipes finissent par appliquer la mĂȘme rĂšgle Ă  la classe mĂšre : “ne touche pas au parent, tu vas tout casser”. Et c’est souvent le signe de bugs dans la Matrice : couplages implicites, effets de bord, overrides surprenants
 et, au passage, des glissements progressifs vers des violations des principes SOLID. Dans cette session, je propose une autre approche : remplacer l’hĂ©ritage utilisĂ© pour partager du comportement par de la composition et de la dĂ©lĂ©gation en Kotlin (by). L’idĂ©e est simple : au lieu d’empiler des responsabilitĂ©s dans une hiĂ©rarchie de classes, on construit des services “en couches” (wrappers / dĂ©corateurs) qui ajoutent chacun un comportement prĂ©cis, tout en dĂ©lĂ©guant le reste. À travers quelques refactorings “avant / aprĂšs”, on verra comment cette approche rend les responsabilitĂ©s plus explicites, facilite les tests, et permet d’évoluer sans crĂ©er de nouvelles classes de base ni de hooks implicites — avec une mĂ©thode de migration progressive, applicable sur une base existante.

Orateur·ices

Thomas Martin

Tech Lead backend chez Whoz aprÚs 10 ans en ESN. Je suis toujours à la recherche de simplicité dans les solutions. Mon langage de prédilection est Kotlin.

Actions rapides

Voir la vidéo

Les sessions futures sur le mĂȘme thĂšme

    • DĂ©veloppement
    • Tool in action

    Le plus dur, c'est de commencer...

    En attente de mission, je lance mon side-project : serendipitech.fr J'avais l'idĂ©e gĂ©nĂ©rale : rĂ©pertorier les conf' en France et proposer une alerte email Ă  ceux qui le souhaite pour ĂȘtre prĂ©venu des nouvelles dates, ouverture des billetteries ou CFP. OK. La stack je l'avais aussi, je voulais continuer d'avancer sur mes acquis : du Spring Boot avec Kotlin et Vue.js en front. Pour l'infra, je voulais mettre mon appli en Docker bien sĂ»r, et un voisin avait un vieux serveur dans un placard, autant que ça serve. Installation d'Ubuntu. Hop, c'est bon. And now what ?! Goutte de sueur sur le front... je commence par quoi ? Le front ? Le back ? Installer Docker ? Acheter mon nom de domaine ? C'est quoi mon premier commit ? C'est quoi ma premiĂšre feature ? Ahhh. Panique. Mais promis, ça n'a pas durĂ©. J'ai rĂ©ussi Ă  me lancer. Envie d'en savoir plus ? De savoir si mon serveur Ă  cassĂ© et j'ai plutĂŽt dĂ©ployĂ© proprement dans le cloud (spoiler : oui) ? Rex dĂ©complexĂ© d'un side project. Pour oser se lancer, prendre du recul sur les diffĂ©rentes briques d'une application et se poser les bonnes questions.

    Vendredi 8h30 Ă  9h25 - Amphi C
    • DĂ©veloppement
    • Quicky

    Le hasard fait bien les tests

    > Le hasard fait bien les choses. Si on applique cette idĂ©e aux tests unitaires ou aux tests d'intĂ©gration, on peut rendre nos tests beaucoup plus imprĂ©visibles et du coup trouver des problĂšmes que notre esprit n'aurait jamais osĂ© imaginer ! Par exemple, rĂ©cemment, j'ai dĂ©couvert dans une bibliothĂšque de gestion de configuration, [un bug](https://github.com/gestalt-config/gestalt/issues/242) qui se produit lorsque la `Locale` est configurĂ© en `AZ`. đŸ€ŠđŸŒâ€â™‚ïž Un autre exemple encore plus simple : ```java int input = generateInteger(Integer.MIN_VALUE, Integer.MAX_VALUE); int output = Math.abs(input); ``` Peut gĂ©nĂ©rer `-2147483648`... Ce qui est assez inattendu pour une valeur absolue ! 😉 Les tests alĂ©atoires peuvent dĂ©couvrir ces cas tordus... C'est ce que l'Ă©quipe elasticsearch a mis en place depuis plusieurs annĂ©es Ă  l'aide du framework [RandomizedTesting](https://labs.carrotsearch.com/randomizedtesting.html) pour tester tout le code Java. Ajoutez Ă  ça de vrais tests d'intĂ©gration Ă  l'aide de [TestContainers](https://java.testcontainers.org/modules/elasticsearch/) et vous aurez une approche complĂšte pour des tests qui Ă©chouent rĂ©guliĂšrement ! AprĂšs cette confĂ©rence, vous ne verrez plus jamais la fonction `random()` comme avant et dĂ©couvrirez comment la (mal)chance peut vous aider ! 🍀

    Vendredi 10h45 Ă  11h00 - Amphi E
    • DĂ©veloppement
    • Quicky

    Petit guide pratique des UUID

    Les UUID sont partout, utilisĂ©s souvent machinalement comme identifiant. Revenons un instant sur leurs origines et ce qu'ils garantissent vraiment — l'unicitĂ© globale sans coordination, pratique, mais pas toujours le meilleur choix comme clĂ© d'unicitĂ©. On explore ensuite quand les employer (ou pas) dans des bases de donnĂ©es et des systĂšmes distribuĂ©s, avant de comparer les diffĂ©rents gĂ©nĂ©rateurs crĂ©ant des arbitrages concret entre confidentialitĂ© et performance.

    Vendredi 11h05 Ă  11h20 - Amphi E