> ## Content Index
> Fetch the complete content index at: https://mindsers.blog/llms.txt
> Use this file to discover other available public pages before exploring further.

# Last week's finds #27
- URL: https://mindsers.blog/fr/post/last-weeks-finds-27/
- Published: 2017-12-10T05:00:00.000Z
- Updated: 2021-09-20T09:31:40.000Z
- Author: Nathanaël Cherrier
- Tags: lastweeksfinds, links, #lang-fr

On fait une semaine des bonnes pratiques et de la conception ? Bon on voit le découplage dans l'architecture hexagonale, la programmation fonctionnelle avec les functors et les monades.

*Dans [cette série](https://mindsers.blog/topic/lastweeksfinds/), je vous propose de faire un peu de veille ensemble. Le principe est simple, je vous parle de ce qui m'a intéressé dans les 7 jours de veille précédents et je vous mets un lien pour que vous puissiez en profiter aussi.*

Si je vous dis *DDD*, *découplage*, ça vous parle ? Maintenant si je vous dis *architecture hexagonale* ou *Ports & Adapters*, est-ce que ça vous parle toujours ? Si non, je pense que vous avez tout à gagner à lire l'article de Maxime Collin sur [son application de l'architecture hexagonale sur une stack Symfony](https://blog.elao.com/fr/dev/architecture-hexagonale-symfony/?ref=mindsers.blog). L'article se veut une introduction à cette architecture, vous pourrez donc en tirer profit même si vous ne faites pas de Symfony.

Il y a deux notions propres à la programmation fonctionnelle qu'il est bon de comprendre : les *Monads* et les *Functors*. Ce sont des notions liées. En effet [une monade est un functor](https://mindsers.blog/fr/post/you-know-functions-whats-about-functors/) mais l'inverse n'est pas vrai. L'exemple le plus connu [des monades en JavaScript est l'objet ](https://medium.com/front-end-hacking/implementing-javascript-functors-and-monads-a87b6a4b4d9a?ref=mindsers.blog)`[Array](https://medium.com/front-end-hacking/implementing-javascript-functors-and-monads-a87b6a4b4d9a?ref=mindsers.blog)`[. Mais, vous pouvez créer les votres](https://medium.com/front-end-hacking/implementing-javascript-functors-and-monads-a87b6a4b4d9a?ref=mindsers.blog). Ne vous inquiétez pas, [les monades et les functors sont simples](https://medium.com/javascript-scene/javascript-monads-made-simple-7856be57bfe8?ref=mindsers.blog) à comprendre. Il ne faut juste pas tomber sur [des articles qui rendent les monades sur-compliquées](https://byorgey.wordpress.com/2009/01/12/abstraction-intuition-and-the-monad-tutorial-fallacy/?ref=mindsers.blog).

Un des changements qui a le plus marqué les développeurs "Apple" lorsqu'ils sont passés de l'Objective-C à Swift fut les *Optionals*. Oui ça n'existait pas en Objective-C et il a fallu commencer à mettre des `?` et des `!` partout dans le code. Pour continuer sur le thème des **Monads**, je vais vous annoncer quelque chose : [les *Optionals* sont des monades cachées par le langage](https://monicagranbois.com/blog/swift/optionals/?ref=mindsers.blog). On peut le comparer au type `Maybe` dans les langages purement fonctionnel. Rentrez dans les profondeurs des *Optionals*!