Fonctions pures en JavaScript

Dans ce tutoriel, nous allons découvrir un principe important dans la programmation fonctionnelles en Javascript, « des fonctions pures ». Dans ce tutoriel, vous allez apprendre ce qu’est une fonction pure et pourquoi vous devriez écrire votre code pour respecter le principe.
 
 

Qu’est-ce qu’une fonction pure?

Une fonction pure est une fonction où la valeur de retour est uniquement déterminée par ses valeurs d’entrée, sans effets secondaires observables. Voici comment fonctionnent les fonctions mathématiques: Math.cos(x) retournera toujours le même résultat pour une même valeur de x. Le calcul ne change pas x.

Une fonction pure est déterministe. Cela signifie que, avec la même entrée, la fonction retournera toujours la même sortie. Pour illustrer cela comme une fonction en termes mathématiques. C’est une fonction bien définie. Chaque entrée renvoie une sortie unique, à chaque fois.

Une fonction est classée comme pure si elle répond à ces déclarations:

  • Avec les mêmes arguments, la fonction retourne toujours le même résultat.
  • Une fonction pure ne change l’état d’aucun de ses arguments.
  • Une fonction pure ne dépend d’aucune dépendance externe.

Si vous vous efforcez de rendre autant de fonctions que possible pures, vous garantissez que votre code:

  • N’a pas d’effets secondaires inattendus.
  • Ne cassera rien d’autre en dehors de la fonction.
  • Garantit l’ordre d’exécution.
  • Les tests unitaires sont plus faciles à écrire
  • La mise en cache devient plus facile. Si les mêmes entrées produisent les mêmes sorties, vous pouvez facilement modifier les résultats si l’exécution de la fonction est longue.
  • Plus facile à comprendre pour les développeurs, car tout le code est autonome
Qu'est-ce qu'une fermeture en JavaScript ?Qu’est-ce qu’une fermeture en JavaScript ?Les fermetures (Closure) permettent aux programmeurs JavaScript d’écrire un code lisible. Nous utilisons fréquemment des fermetures en JavaScript et, quelle que soit votre expérience en…Lire plus
Toutes mes fonctions doivent-elles être pures?

Réponse simple, non. Il est impossible d’écrire une application entière avec uniquement des fonctions pures. Avec un effort conscient, vous constaterez que lorsque vous essayez consciemment de rendre chaque fonction que vous écrivez pure, vous finirez par écrire un code plus robuste naturellement.

Prenons un exemple simple, disons que vous avez une fonction qui prend un tableau en argument. Si vous appliquez l’une des fonctions JS prédéfinies telles que splice(), reverse(), votre fonction est impure car ces fonctions modifient le tableau.

Lorsque vous modifiez les arguments, votre fonction est appelée « impure ». Les fonctions impures rendent la vie plus difficile. Les fonctions impures sont plus difficiles à tester, ce qui augmente d’autant le risque que des BUGs apparaissent dans votre code. Dans l’exemple ci-dessus, pour que la fonction reste pure, vous pouvez cloner le tableau transmis, effectuer la mutation et renvoyer le clone. Le tableau d’origine restera intact et donc la fonction est pure.
 

Exemple d’une fonctions pure
const add = (x, y) => x + y;
add(1, 2); // 3

L’exemple ci-dessus renvoie une valeur basée sur les paramètres donnés, peu importe où et quand vous l’appelez. Si vous passez 1 et 2, vous aurez toujours 3. Rien d’autre n’affecte la sortie.
 
 

Exemple d’une fonctions impure
let x = 1;
const add = (y) => {  x += y; };
add(2);  // x égale à 3 (pour la première fois)

L’exemple ci-dessus ne renvoie rien. Il se base sur l’état partagé pour effectuer son travail en incrémentant une variable en dehors de sa propre portée.

L’état partagé introduit une dépendance temporelle. Vous obtenez des résultats différents selon le moment où vous avez appelé la fonction. La première fois, on obtient 3, la prochaine fois, 5, etc.
 

Conclusion

Vous pouvez garder vos fonctions pures avec un léger refactoring. Jour après jour, si vous gardez ce principe à l’esprit, vous finirez par écrire un code plus robuste.
QCM JavascriptQCM Javascript – Partie 1QCM sur Javascript avec des réponses pour la préparation des tests techniques, des tests en ligne, aux examens et aux certifications. Ces questions et réponses…Lire plus

Partagez cet article

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *