Desktop First UX Summit 2021 : Building Maintainable UIs with FLUX

En introduction de sa présentation, Jason Southwell a rappelé que l’approche RAD (Rapid Application Development) et notamment les concepteurs de fiches proposés dans Delphi et C++Builder pouvaient entrainer de mauvaises pratiques de développement : tout est trop facile, par conséquent les développeurs ne font pas toujours attention à ce qu’ils font. L’interaction entre les composants n’est pas toujours claire pour tous. La maintenance des projets peut s'en ressentir notamment si on utilise LiveBindings.

Il a enchainé avec les bienfaits et aberrations liées à la programmation orientée objet. La POO bien employée est pratique, mais peut très vite dériver si on fait de l’objet pour faire de l’objet.

La solution serait FLUX. Un pattern de développement créé chez Facebook pour éliminer les problèmes liés aux approches MVC (ou autres) actuellement utilisées en programmation.

Le principe de FLUX est de tout séparer dans la logique de conception. C’est une machine à états qui gère les différentes parties du programme.

Jason a proposé une démo basée sur la librairie open source CocinAsync qu’il propose pour implémenter FLUX dans un projet Delphi sur son compte BitBucket.

Je préfère vous laisser revoir cette présentation car ça m’est un peu compliqué de tout résumer.

L’approche FLUX me fait penser à un mélange de gestion de messages / événements et une séparation du code entre affichage, stockage et actions. Un truc pas si nouveau en fait mais à tester dans un projet pour voir si c’est assez intuitif et si ça vaut le coup de s’y mettre.

La librairie CocinAsync permet de déclarer des actions et leur passer du code. Ca ressemble à une gestion d’événements mélangée à du LiveBindings.

Cette librairie a demandé beaucoup de travail. Elle semble hyper puissante dans son fonctionnement et bien pensée. Il est probable que s'y plonger nécessite un peu plus que 5 minutes donc mon commentaire est à nuancer.

Ca pourra faire l’objet d’une séance de découverte en live coding sur Twitch quand je reprendrai même si ça me laisse assez dubitatif sur l’intérêt. Séparer le code d’affichage du code de gestion, passant par des éléments communs gérant les données, ça ne me semble pas déconnant, mais là, sur une présentation d’une heure, je trouve cette approche compliquée. Il faudra y jeter un coup d'oeil appronfondi.

Si vous utilisez FLUX et/ou CocinAsync, n'hésitez pas à me laisser un message pour en discuter.

En tout cas une chose est certaine: Jason Southwell ne doit pas être fan de la programmation en mode No Code et je suis à 100% d'accord malgré le webinaire que je vous prépare pour le 30 septembre.