AFUP Forum PHP 2019 Baromètre Planète PHP

La parole est aux speakers : Nicolas De Boose

Jusqu’au Forum PHP 2019, retrouvez nos interviews de speakers pour mieux comprendre leur parcours et le sujet qu’ils ou elles aborderont lors de leur conférence !

La conférence

La clean architecture : pourquoi ? Comment ? Pour qui ?

Les frameworks et librairies externes sont une bénédiction pour les développeurs : cela nous permet de gagner du temps, d'utiliser du code (généralement) de qualité, et de nous concentrer sur ce qui est vraiment important: la vraie logique qui rapporte de la valeur!

Cependant, tout vient avec un coût...

A y regarder de plus près : qui est vraiment "le plus important" dans l'histoire? Le framework dicte ses lois: Vous devez "extend" ses classes, rajouter ses annotations, suivre sa structure de dossiers, etc... C'est une sorte de mariage forcé. Au début, tout est beau... Mais un mariage, c'est fait pour durer ! Quand la "mariée" décide de déprécier et ensuite supprimer ce que vous aimez chez elle (ou pire : elle n'est plus maintenue), vous vous retrouverez paralysé avec une version obsolète, par peur de casser votre fameuse logique métier...

Ca ne peut plus durer ! Dans ce talk, on parlera de tout ce que j'aurais aimé qu'on me dise sur la clean architecture avant de commencer

Comment controler le framework, plutôt que lui ne vous contrôle ? Comment arriver à ce que le framework et vos librairies ne soient qu'un détail d'implémentation ?

Vous aurez en prime :

  • Du code clair
  • Une architecture claire, qui fonctionne sur du back-end comme du front-end
  • Du code facilement testable unitairement... Plus besoin de "booter" votre framework pour tester vos vues
  • Plus aucune peur de passer de mettre à jour une librairie, voire de la changer
Grace Hopper
24/10/2019
10:15-10:55

Comment as-tu connu la Clean Architecture ? Quelles ont été tes ressources, quels livres ont pu t’inspirer ?

J’ai découvert la Clean Architecture en parcourant le blog et les vidéos de Robert Martin/Uncle Bob. À l’époque, je n’avais pas entièrement compris toutes les subtilités de cette architecture et il n’y avait pas encore beaucoup de ressources disponibles à ce sujet. Je n’y ai donc pas porté beaucoup d’attention.

Il y a deux ans, je suis passé sur un projet assez conséquent écrit en Typescript. L’idée était de ne pas adopter un framework. J’en ai profité pour me pencher plus sérieusement sur cette clean architecture. J’ai re-regardé la vidéo d’Uncle Bob et relu son article plusieurs fois. Je suis aussi tombé sur un de ses repo git qui contient 2-3 exemples intéressants ainsi que sur une de ses conférences. Son livre apporte aussi quelques réponses, mais il est dispensable. Enfin, il y a également quelques articles/vidéos intéressant(e)s de développeurs IOS et Android qui m’ont aidé à y voir plus clair (comme celle-ci ou celle-ci).

Pour me faire la main, j’ai commencé un side project où je me suis mis quelques contraintes (le front et l’api doivent partager la même logique). À force de faire des essais/erreurs et de questionner Google sur des thèmes très spécifiques, je suis arrivé à affiner mes connaissances. Ce n’est pas toujours évident si on veut en extraire l’idée de base car les gens changent parfois un peu l’architecture selon leur envie ou besoin.

Les frameworks s’organisent de plus en plus de façon modulaire, et notamment Symfony. Pour toi qu’est-ce que cela apporte au niveau de la façon d’architecturer nos applications ?

Je pense que cette modularité une excellente chose. Au final, le framework Symfony (4) n’est “que” le ciment entre toutes ses librairies. Cependant, bien que ce soit très modulaire, ça ne veut pas dire que nous posons correctement les frontières (”boundaries”) dans notre application.

En effet, on retrouve des annotations d’ORM, mélangées à celles des validations dans des entités qui sont disponibles dans les vues en passant par des controllers qui ”catch” de potentielles exceptions provenant de nos services…

Au final, bien que le framework soit modulaire, notre code l’est-il vraiment ?

Tu bénéficies du programme d’accompagnement des speakers : comment en as-tu entendu parler ?

À la base, c’est via Pascal Martin sur Twitter. Lors de ma proposition de conférence, j’ai vu cette option et je me suis dit “J’ai déjà donné quelques conférences, mais je suis certain que je vais apprendre plein de choses” 🙂

Le speaker

Nicolas DE BOOSE
Nicolas DE BOOSE
Nicolas a découvert la programmation en 1997 en mettant en ligne ses premiers sites internet sur “multimania” et “citeweb”. Cette passion ne l’a jamais quitté depuis. Curieusement, chaque projet sur lequel il a été impliqué concernait du code legacy important. Il y a pris goût et adore “upgrader” le code ainsi que les équipes de dev. À part cela, il a une femme qu’il aime de tout son coeur et fait un peu de sport: kitesurf et tennis.

Autres interviews

En poursuivant votre navigation sur ce site, vous acceptez l’utilisation des cookies pour améliorer votre navigation. plus d'infos

1. Qu’est-ce qu’un cookie?

Un Cookie est un petit fichier texte enregistré sur votre terminal (ordinateur, tablette, smartphone, etc.), à l’occasion de la consultation d’un service en ligne grâce à votre logiciel de navigation. Il permet à son émetteur d’identifier le terminal dans lequel il est enregistré, pendant la durée de validité ou d’enregistrement du Cookie. Lors de la consultation de notre site Internet, des informations relatives à la navigation de votre terminal sont susceptibles d'être enregistrées dans ces fichiers dits "Cookies". Ces derniers sont installés sur votre terminal, sous réserve des choix que vous auriez exprimés concernant les Cookies et que vous pouvez modifier à tout moment.

2. A quoi servent les cookies émis sur notre site ?

Seul l’émetteur d’un cookie est susceptible de lire ou de modifier les informations qui y sont contenues.
Les cookies utilisés sur notre site permettent :

3. Vos choix concernant les cookies

Vous disposez de différents moyens pour gérer les cookies. Tout paramétrage que vous pouvez entreprendre sera susceptible de modifier votre navigation sur notre site et sur Internet en général et vos conditions d'accès à certains services de notre site nécessitant l'utilisation de cookies. Vous pouvez à tout moment exprimer et modifier vos souhaits en matière de cookies, par les moyens décrits ci-dessous. L'accord sur les cookies L'enregistrement d'un cookie dans un terminal est essentiellement subordonné à la volonté de l'utilisateur du terminal, que celui-ci peut exprimer et modifier à tout moment et gratuitement à travers les choix qui lui sont offerts par son logiciel de navigation. Si vous avez accepté dans votre logiciel de navigation l'enregistrement de cookies dans votre terminal, les cookies intégrés dans les pages et contenus que vous avez consultés pourront être stockés temporairement dans un espace dédié de votre terminal. Ils y seront lisibles uniquement par leur émetteur.

Le refus des cookies Si vous refusez l'enregistrement de cookies dans votre terminal, ou si vous supprimez ceux qui y sont enregistrés, vous ne pourrez plus bénéficier d'un certain nombre de fonctionnalités qui sont néanmoins nécessaires pour naviguer dans certains espaces de notre site. Tel serait le cas si vous tentiez d'accéder à votre compte ou à votre abonnement qui nécessite de vous identifier. Tel serait également le cas lorsque nous, ou nos prestataires, ne pourrions pas reconnaître, à des fins de compatibilité technique, le type de navigateur utilisé par votre terminal, ses paramètres de langue et d'affichage ou le pays depuis lequel votre terminal semble connecté à Internet. Le cas échéant, nous déclinons toute responsabilité pour les conséquences liées au fonctionnement dégradé de nos services résultant de l'impossibilité pour nous d'enregistrer ou de consulter les cookies nécessaires à leur fonctionnement et que vous auriez refusés ou supprimés. Les choix offerts par votre logiciel de navigation Vous pouvez configurer votre logiciel de navigation de manière à ce que des cookies soient enregistrés dans votre terminal ou, au contraire, qu'ils soient rejetés, soit systématiquement, soit selon leur émetteur. Vous pouvez également configurer votre logiciel de navigation de manière à ce que l'acceptation ou le refus des cookies vous soient proposés ponctuellement, avant qu'un cookie soit susceptible d'être enregistré dans votre terminal. Pour la gestion des cookies et de vos choix, la configuration de chaque navigateur est différente. Elle est décrite dans le menu d'aide de votre navigateur, qui vous permettra de savoir de quelle manière modifier vos souhaits en matière de cookies. Selon votre navigateur, consultez le lien ci-dessous pour configurer votre navigateur et refuser les cookies :