Fermer

juillet 21, 2021

JavaScript de programmation fonctionnelle


Découvrez les principaux concepts de la programmation fonctionnelle et comment nous pouvons les appliquer dans les applications JavaScript.

L'un des paradigmes de programmation les plus célèbres est la programmation orientée objet. Chaque développeur, à un moment donné, a probablement entendu parler de ce paradigme et l'a utilisé. Le fait est que nous utilisons depuis longtemps la programmation orientée objet à un certain niveau dans nos applications, et parfois ce paradigme peut ne pas être la meilleure approche pour résoudre un problème spécifique.

La programmation fonctionnelle est un paradigme de programmation qui a a gagné beaucoup de popularité et d'utilisation parmi les développeurs au cours des dernières années. Plusieurs langages de programmation sont spécifiquement conçus pour fonctionner avec ce paradigme, tels que Clojure, Elixir, Haskell, etc.

Nous avons quelques bibliothèques différentes dans l'écosystème JavaScript qui nous aident à travailler avec un style de programmation plus fonctionnel dans nos applications, comme Ramda et Lodash. Parfois, nous n'avons pas besoin de ces bibliothèques et nous pouvons travailler avec uniquement les principaux concepts de JavaScript pour obtenir un code de programmation plus fonctionnel.

Apprendre exactement comment fonctionne le paradigme de la programmation fonctionnelle peut faire une différence totale dans la carrière d'un développeur. La façon dont le développeur pense, code, résout un problème – tout peut être influencé par un paradigme de programmation.

Nous devons connaître quelques concepts sur la programmation fonctionnelle pour implémenter ce paradigme dans les applications JavaScript. Alors, apprenons-en plus à leur sujet.

Qu'est-ce que la programmation fonctionnelle ?

La programmation fonctionnelle est un paradigme de programmation conçu pour gérer des fonctions mathématiques pures. Ce paradigme est totalement axé sur l'écriture de fonctions plus pures et composées.

JavaScript est un langage multi-paradigmes, ce qui signifie que nous pouvons facilement mélanger de nombreux paradigmes différents dans un simple morceau de code JavaScript. Nous pouvons utiliser simultanément des paradigmes de programmation orientés objet, procédural et fonctionnel en JavaScript. Le fait que JavaScript soit multi-paradigme et nous permette de travailler avec de nombreuses façons différentes de programmer est ce qui rend ce langage si beau et puissant.

La programmation fonctionnelle comporte quelques concepts importants que nous devons connaître et comprendre. En implémentant ces concepts dans vos applications, vous obtiendrez un code plus fonctionnel. Cela fera une énorme différence dans votre application, la rendant plus lisible, utilisable, gérable, facile à tester et sans bogue.

Passons en revue les concepts importants de la programmation fonctionnelle et comment nous pouvons les appliquer en JavaScript.

Objets de première classe

Les fonctions de JavaScript sont des objets de première classe, également appelés «citoyens de première classe». Cela signifie que nous pouvons travailler avec des fonctions en JavaScript de la même manière que des variables.

const sum = (a, b)[19659016]=> a + b;

const resultSum = sum(1,  2);

const sumAgain = (a, b, sum)[19659016]=> sum(a, b);

Les fonctions en JavaScript sont des objets – elles peuvent avoir des propriétés et avoir un lien en retour à leur fonction constructeur.

Nous pouvons travailler avec des fonctions en JavaScript de différentes manières. Par exemple :

  • Nous pouvons les affecter dans une variable en tant que valeur.
  • Nous pouvons les transmettre en tant qu'arguments à d'autres fonctions.
  • Nous pouvons les renvoyer en tant que valeur de retour d'une autre fonction.
  • Nous pouvons les renvoyer comme valeur de retour d'une autre fonction.
  • Nous pouvons les inclure dans différentes structures de données.

La façon dont JavaScript gère les fonctions est ce qui nous permet d'implémenter le paradigme de la programmation fonctionnelle dans JavaScript.

Fonctions pures

L'un des concepts les plus importants du paradigme de la programmation fonctionnelle. est des fonctions pures. La programmation fonctionnelle nous oblige à écrire des fonctions pures et déterministes, et c'est ce qui rend la programmation fonctionnelle si belle et utile : elle nous oblige à écrire un meilleur code avec des fonctions pures, ce qui rend notre code plus facile à tester et à gérer.

Les fonctions pures sont des fonctions. qui, étant donné une entrée spécifique, renverra toujours la même sortie. Les fonctions pures sont conçues pour ne pas provoquer d'effets secondaires, par exemple, écrire sur la console, modifier un objet, réaffecter une variable, etc.

const myName = (name) => `Bonjour ${nom}`;

monNom("Leonardo ") 

L'une des raisons pour lesquelles les fonctions pures sont si puissantes est qu'elles sont beaucoup plus faciles à tester et à déboguer. Étant donné qu'une fonction pure doit renvoyer la même sortie pour une valeur d'entrée spécifique, nous pouvons tester cette fonction très facilement.

Certaines fonctions reposent sur des données autres que les arguments que vous transmettez. Ce sont les fonctions impures, des fonctions qui mutent ou modifient toute sorte de données, de variables, d'états extérieurs. Les fonctions impures sont également connues pour renvoyer des valeurs différentes.

let count = 0;

const increaseCount = (value ) => count += value;

Les fonctions pures sont des blocs de construction simples et réutilisables dans une application. Elles sont complètement indépendantes de l'état extérieur, faciles à refactoriser, à déplacer dans la base de code et à s'adapter à l'avenir.

Fonctions d'ordre supérieur

Un concept puissant de programmation fonctionnelle est celui des fonctions d'ordre supérieur. Ils constituent un excellent moyen d'extraire des fonctionnalités et d'écrire un meilleur code.

Une fonction d'ordre supérieur est une fonction qui reçoit une autre fonction en tant que paramètre ou renvoie une fonction en tant que valeur de retour. Vous utilisez peut-être quotidiennement de nombreuses fonctions de haut niveau sans le savoir, par exemple les méthodes _mapfilter et reduce_ de JavaScript sont des fonctions d'ordre supérieur.

const names = ["Leonardo", "Lucas", "Bianca"[19659021], "José", "Maria", "Joe"];

const sayHiToNames = noms.map(nom => `Bonjour ${nom}`[19659021]);

Il est très facile d'identifier si une fonction est en fait une fonction d'ordre supérieur : si cette fonction reçoit une autre fonction en paramètre (un autre terme pour cela est « rappel »), c'est un fonction d'ordre supérieur.

Les fonctions d'ordre supérieur sont très utiles pour écrire des fu composés et complexes. fonctions. Ils sont recommandés pour abstraire et séparer vos actions, diviser vos fonctions et créer des fonctions qui peuvent fonctionner avec une variété de types de données.

Composition

Savoir comment composer vos fonctions et comment les placer au bon endroit est un technique que vous pouvez améliorer au fil du temps et un concept très important dans la programmation fonctionnelle.

La composition peut également être exprimée sous forme de combinaison – c'est un processus consistant à combiner plusieurs fonctions dans une hiérarchie pour produire une nouvelle fonction ou effectuer un calcul. [19659014]const splitName = (name) => name.split('_'[19659021]).join(' ');

const returnNameCapitalized = (name) => nom.en majuscule();

console.log(returnNameCapitalized(splitName('leonardo_maldonado')))[19659021;

La composition consiste à faire passer des entrées de droite à gauche, en retournant la sortie d'une fonction en entrée d'une autre fonction. Pour les débutants en programmation fonctionnelle, il s'agit d'un concept plus avancé et peut être difficile à saisir au début.

Une fois que vous l'aurez compris et commencé à l'utiliser, vous sentirez qu'il vous a aidé à écrire des fonctions mieux composées et plus lisibles, en séparant préoccupations et rendre votre code plus propre.

Déclarative vs. Impératif

La programmation déclarative et impérative sont des paradigmes de programmation différents qui peuvent vous aider à obtenir des résultats différents.

La programmation déclarative est un paradigme de programmation où nous spécifions la logique du programme sans décrivant le contrôle de flux. La programmation déclarative concerne ce qu' faire pour obtenir un certain résultat.

const nombres = [1, 2[19659021], 3, 4, 5];

const sumNumbers = (n ) => n.réduire((acc, courant) =>  acc + current);

La programmation impérative est un paradigme de programmation où nous spécifions la logique du programme décrivant le contrôle de flux. La programmation impérative consiste à comment obtenir un certain résultat.

const nombres = [1, 2 3, 4, 5];

const sumNumbers = (n) => {

let résultat final = 0;
for (let i  = 0; i < n.length; i++) { 
  Résultat final += n[i];
  }
retour Résultat final;
}

Fonctionnel la programmation favorise la programmation déclarative par rapport à la programmation impérative – plutôt que de penser à comment le faire, elle s'appuie sur quoi faire. est l'immuabilité. Un objet immuable est un objet qui ne peut pas être modifié après sa création. Imaginons que nous ayons un objet et que nous souhaitions modifier cet objet en ajoutant un nouvel élément, que devons-nous faire ? Nous devons créer un nouvel objet, une copie de l'objet réel, et ne pas le muter.

L'immutabilité est un concept puissant qui vous aide à empêcher la création d'effets secondaires inattendus dans votre base de code. Cela vous facilite la lecture et la composition de votre code.

Étant donné que JavaScript est un langage multi-paradigmes, il ne présente pas les garanties que nous avons dans les langages de programmation fonctionnels où nous pouvons travailler correctement avec le concept d'immuabilité.

Pour avoir des données immuables dans votre application, vous devez abandonner quelques méthodes, notamment les méthodes de tableau telles que fillpopsortspliceunshiftreversepushetc.

Nous avons quelques bibliothèques qui peuvent nous aider avec cela, par exemple, Immuable.js. Mais parfois, nous ne voulons pas utiliser une bibliothèque tierce, et c'est le moment où nous devrions nous fier à du JavaScript vanilla pour cela.

Object.assign est la méthode parfaite pour travailler avec des données immuables. . Prenons comme exemple un objet, et nous voulons créer un nouvel objet à partir de cet objet et modifier une seule propriété.

const car = {
  modèle: 'Tesla',
  année: 2020
  };

const newVoiture = voiture;
  newCar.model = 'Honda';

Nous n'utilisons pas la méthode Object.assign. Lorsque nous modifions l'objet newCarnous modifions également l'ancien objet car.

Object.assign est une fonctionnalité ES6 qui copie une ou plusieurs propriétés d'un ou plusieurs objets vers un objet cible et le renvoie.

const car = {
  modèle: 'Tesla',
  année: 2020
  }
const newcar = Objet.assign({}[19659021], voiture, {
  model: 'Honda'
  })

L'immuabilité est un excellent concept avec lequel travailler, en particulier lorsque nous avons de gros objets et que nous devons effectuer une sorte de tâche avec eux, nous peut copier l'objet et en créer un nouveau sans le muter.

En savoir plus sur la programmation fonctionnelle

La programmation fonctionnelle est un paradigme vraiment puissant et magnifique pour écrire un meilleur code. Il présente de nombreux avantages, tels que des applications sans bogues, de l'efficacité et facilite le test, la réutilisation du code, etc. Il améliore non seulement votre code, mais également la façon dont vous codez. Même si vous travaillez avec un langage avec un paradigme différent de celui de la programmation fonctionnelle, vous aurez toujours les concepts en tête et les appliquerez.

Il y a quelques autres concepts à saisir sur le paradigme de la programmation fonctionnelle, tels que Currying et Partial Applicationil y a donc beaucoup plus à étudier au cas où vous voudriez approfondir ce paradigme de programmation.

Ici vous pouvez lire un très bel open -livre source sur la programmation fonctionnelle en JavaScript et continuer à étudier à ce sujet.

Conclusion

La programmation fonctionnelle est de plus en plus utilisée par les développeurs JavaScript, et dans cet article, nous avons découvert quelques concepts de programmation fonctionnelle qui font vraiment briller ce paradigme . Il existe une variété d'autres concepts dans la programmation fonctionnelle, mais en suivant ceux qui ont été mentionnés ici, vous améliorerez certainement votre code et vos compétences.




Source link