WPML

La programmation fonctionnelle est un sujet très populaire parmi les développeurs de nos jours, et ce n’est pas sans raison. La version 4.5 de WPML était un projet de grande envergure qui a introduit l’option de traduire automatiquement votre site. Pour nous, c’était aussi le bon moment pour passer à la programmation fonctionnelle. Voici ce que nous avons appris au cours de ce processus.

Qu’est-ce que la programmation fonctionnelle ?

Vous avez probablement entendu dire que la programmation fonctionnelle rend votre code plus lisible et plus facile à tester. Mais pour bien la comprendre, il est important d’en saisir les concepts connexes.

Pour commencer, la programmation fonctionnelle est un paradigme de programmation qui met l’accent sur l’utilisation de fonctions pour construire des logiciels et sur la composition de fonctions entre elles pour créer des fonctions plus complexes. La programmation fonctionnelle rend le code plus déclaratif par nature. Vous exprimez ce que vous voulez plutôt que d’avoir une séquence d’instructions qui mettent à jour l’état du programme.

Il est important de noter les fonctions qu’elle utilise, en particulier les fonctions pures. Les fonctions pures reçoivent des données et renvoient des données, mais n’ont aucun autre effet secondaire. Cela rend les fonctions très faciles à tester car si vous donnez les mêmes paramètres, vous obtenez le même résultat.

En termes simples, dans la programmation fonctionnelle, le résultat dépend de l’entrée.

Pourquoi la programmation fonctionnelle ?

WPML est un projet vaste et complexe. Jusqu’à récemment, nous utilisions la programmation orientée objet (POO) pour tenter de gérer cette complexité. L’un des principaux défis consiste à écrire du code de test (tests unitaires) pour tous nos projets. Lorsque nous écrivons du code testable, nous devons nous assurer que les modifications que nous apportons ne cassent pas le code existant.

Les tests unitaires du code POO ont leurs limites. Les dépendances du code doivent être simulées pour que les classes puissent être testées indépendamment. Par conséquent, les tests finissent par être vastes et complexes.

On dit que l’objectif principal de la programmation fonctionnelle est de déterminer « quoi résoudre ». En revanche, la programmation orientée objet adopte une approche axée sur le « comment résoudre ». Dans cette optique, il nous a semblé que la programmation fonctionnelle pourrait nous aider à surmonter certains de nos défis.

Ce que nous avons fait

Quand on parle de programmation fonctionnelle, PHP n’est pas le premier langage qui vient à l’esprit, bien qu’il nous permette d’introduire un style fonctionnel. Par exemple, les hooks et les filtres qui permettent d’étendre WordPress utilisent des fonctions pour remplacer les fonctionnalités de WordPress.

Malheureusement, il n’existe pas de bibliothèque standard pour utiliser un paradigme plus fonctionnel en PHP. Nous avons examiné de nombreuses bibliothèques, mais aucune n’avait exactement ce dont nous avions besoin pour écrire du code expressif dans un style fonctionnel. Nous avons donc décidé d’écrire notre propre bibliothèque. Nous nous sommes inspirés de différentes sources, mais surtout de bibliothèques Javascript, que nous avons trouvées plus matures.

La programmation fonctionnelle a une approche différente des autres paradigmes, donc passer à un paradigme de programmation fonctionnelle est en fait une grande étape. Cela vous oblige à changer votre façon de penser l’écriture de code et la résolution de problèmes. Il faut beaucoup de pratique pour écrire un code expressif qui soit clair et concis.

Est-ce que cela a fonctionné ?

Nous pensons vraiment que oui. La programmation fonctionnelle possède un certain nombre de caractéristiques qui jouent en notre faveur :

  • La structure du code est meilleure
  • Le code est plus expressif et concis
  • La duplication de code est réduite
  • Les fonctions sont plus petites et donc plus faciles à tester et à réutiliser
  • Les fonctions peuvent être composées entre elles
  • Moins de simulations dans les tests
  • Des bibliothèques de simulation réutilisables ont été développées

Mais bien sûr, rien n’est parfait. Bien que la programmation fonctionnelle soit plus concise et prévisible, elle présente des inconvénients, surtout si vous n’y êtes pas habitué :

  • Elle est plus difficile à déboguer
  • Elle est plus difficile à modifier, bien que cela puisse aussi être considéré comme un avantage, car cela vous oblige à réfléchir aux modifications plutôt qu’à introduire des changements rapides
  • La courbe d’apprentissage est raide

N’ayez pas peur d’essayer

Il va sans dire que la popularité de la programmation fonctionnelle est plus qu’une simple tendance. En raison de sa nature, la programmation fonctionnelle est idéale pour des tâches telles que l’apprentissage automatique et l’analyse de données. Par conséquent, des entreprises de toutes tailles ont commencé à s’y intéresser, voire à entamer leur transition vers la programmation fonctionnelle. Cela ne signifie pas que vous devez dire adieu à l’orienté objet pour toujours, mais cela vaut la peine d’essayer la programmation fonctionnelle. Même si vous finissez par ne jamais l’utiliser, il y a de fortes chances que vous progressiez en tant que développeur.

Si vous souhaitez en savoir plus, nous vous suggérons de commencer par la série d’articles de blog Composing Software.

Une fois que vous serez prêt à aller plus loin, jetez un œil au dépôt de notre projet FP.

Vous vivez et respirez le code ? Rejoignez-nous.

Nous sommes toujours à la recherche de développeurs exceptionnels pour rejoindre notre équipe. Si vous vous reconnaissez, n’attendez plus : postulez dès aujourd’hui.

Vous avez trouvé cela utile ? Partagez cet article :