4 points par GN⁺ 2023-08-20 | 2 commentaires | Partager sur WhatsApp
  • Article sur le « Railway Oriented Programming » (ROP), une méthode de gestion fonctionnelle des erreurs dans le développement logiciel
  • Le ROP, fondé sur une métaphore ferroviaire, est facile à comprendre et ludique
  • Création sur GitHub d’un projet comparant du C# classique et du F# en utilisant l’approche ROP
  • Mise en garde contre une utilisation extrême du ROP, détaillée dans un texte intitulé « Against Railway-Oriented Programming »
  • Sujet présenté dans diverses conférences, notamment NDC London 2014, NDC Oslo 2014 et Functional Programming eXchange 2014
  • L’approche du ROP est liée à la monade Either de Haskell et à la composition de Kleisli, mais il ne s’agit pas d’une tentative de faire un tutoriel sur les monades
  • Insistance sur l’importance de partir d’exemples concrets avant d’aller vers des concepts abstraits
  • Approche ROP incluant des techniques comme l’utilisation d’une liste de types d’erreurs personnalisés, l’intégration de fonctions monadiques et non monadiques dans un pipeline, le mapping des exceptions vers des cas d’erreur, ou encore la combinaison parallèle de fonctions monadiques
  • Objectif : fournir un modèle ROP polyvalent, facile à maintenir, qui impose un style cohérent
  • Recommandation du projet Chessie pour celles et ceux qui veulent une bibliothèque F# prête à l’emploi fonctionnant avec NuGet
  • Création d’un exemple de service web avec les techniques ROP et application de l’approche ROP à FizzBuzz
  • Suggestions de lectures complémentaires, dont divers billets et tutoriels sur les monades, pour celles et ceux qui souhaitent approfondir Either et la composition de Kleisli

2 commentaires

 
GN⁺ 2023-08-20
Discussion sur Hacker News
  • L’article aborde le concept de Railway Oriented Programming (ROP), un motif de programmation fonctionnelle qui aide à gérer le traitement des erreurs de manière propre et efficace.
  • Un commentateur met en avant l’usage du mot-clé with en Elixir comme une implémentation pratique du ROP. Il permet l’exécution séquentielle de fonctions et autorise un retour anticipé lorsqu’une fonction ne correspond pas à la sortie attendue.
  • Un autre commentateur note que l’auteur mentionne un billet de suivi, « Against Railway Oriented Programming », qui met en garde contre l’usage détourné du ROP comme substitut à la gestion des exceptions. Le commentateur convient que, même si le ROP a parfois sa place, dans la plupart des cas les exceptions offrent une manière plus propre de gérer les conditions d’erreur.
  • Certains commentateurs estiment que le ROP peut éloigner la gestion des erreurs du site d’appel, ce qui n’est pas forcément idéal puisque c’est souvent l’appelant qui est le mieux placé pour les traiter. Ils suggèrent aussi que le ROP peut nécessiter du code boilerplate supplémentaire, facile à oublier ou à mal écrire.
  • Le site qui héberge l’article reçoit des éloges de plusieurs commentateurs pour son contenu pédagogique, en particulier pour son attention portée aux concepts de programmation fonctionnelle.
  • Un commentateur suggère que la programmation dataflow pourrait constituer une meilleure alternative au ROP, car elle permet de gérer les erreurs sans affecter le « happy path » du programme.
  • L’article a déjà été discuté à plusieurs reprises sur Hacker News, ce qui témoigne de sa pertinence durable et de l’intérêt continu qu’il suscite dans la communauté technique.
  • Certains commentateurs expriment leur inquiétude quant au fait que l’usage du ROP puisse donner à toute la logique métier la même apparence, et proposent d’autres approches pour les erreurs de validation et la gestion des effets de bord.
  • Plusieurs commentateurs saluent ces discussions récurrentes autour du ROP, en notant que leur compréhension et leur point de vue sur le concept évoluent au fil de leur parcours technique.
  • Un commentateur partage son propre article sur la mise en œuvre du ROP en C#.