PC & Mobile

Quel est le gros problème avec JavaScript fonctionnel? – Aphinya Dechalert

Quel est le gros problème avec JavaScript fonctionnel? - Aphinya Dechalert


et pourquoi c'est important pour votre code

Image composée par Aphinya Dechalert. Légende: le tuyau fonctionnel de la licorne - où des changements se produisent mais pas des mutations.

Les modèles de programmation fonctionnelle font leur chemin dans la conscience commune à mesure que de plus en plus de développeurs en parlent. Cependant, les idées derrière le motif ne sont pas tout à fait nouvelles.

Il s’agit simplement d’une autre manière de demander à notre code d’être évalué.

Les modèles fonctionnels dans JavaScript sont un gros problème, non pas parce qu’ils sont intrinsèquement meilleurs que les autres modèles disponibles, mais plutôt parce qu’ils encouragent la personne derrière le code à exploiter les méthodes existantes et les techniques disponibles qui ne sont pas suffisamment utilisées.

Cela me ramène donc à la question de savoir quel est le problème avec le JavaScript fonctionnel?

La programmation fonctionnelle repose sur l’idée que ce que vous inscrivez produira toujours le même résultat, quel que soit l’ordre.

Par exemple, peu importe comment ajouter ou soustraire les nombres suivants, le résultat restera toujours le même.

3 + 8 - 5 = 68 + 3 - 5 = 68 - 5 + 3 = 6

En JavaScript, ce type d’effet peut être obtenu par le biais de fonctions construites de manière à ne pas dépendre de transformations basées sur un état ou un processus. Cela signifie aucune boucle, aucune imbrication et tout ce qui nécessite un processus particulier pour créer une sortie.

La programmation fonctionnelle est comme faire un pain ciabatta - peu importe l'ordre dans lequel vous placez les ingrédients (farine, eau, levure et sel), à condition qu'ils soient tous là, dans les bonnes quantités et mélangés ensemble. vous ne pouvez pas vraiment gâcher.

Croyez-moi, j'ai essayé. Les schémas fonctionnels et les pains ciabatta sont l’une des rares choses à la sécurité absolue de la vie.

La particularité de JavaScript est qu'il permet des fonctions de première classe. Cela signifie que les fonctions peuvent être traitées comme des données et attribuées à des variables.

Par exemple, la syntaxe suivante est acceptable en JavaScript.

const cat = Cat ();const makeCatJump = jump (cat);

Qu'est-ce qui s'est passé ici est que Chat() la fonction est assignée à la variable chat et la sortie générée est traitée comme une valeur, qui est ensuite transmise à la fonction saut().

Ceci est permis car JavaScript permet une chose appelée fonctions d'ordre supérieur. Cela signifie qu'une fonction est capable de prendre une autre fonction et peut renvoyer une fonction.

Encore confus?

Cela peut sembler excessivement compliqué, mais c’est plutôt une substitution en mathématiques.

Voici un diagramme pour faciliter la digestion mentale.

Alors, où utiliseriez-vous cela exactement? Tout ce qui nécessite des fonctions de substitution, telles que des contrôles de flux async avec des fonctions de rappel. Cela vous évitera d’écrire comment traiter les résultats asynchrones à maintes reprises, en plus de rendre votre code beaucoup plus lisible.

Eh bien, c’est un peu exagéré. Lorsqu'il s'agit de modèles fonctionnels, les objets mutables ne font jamais partie de l'équation. C'est parce que les données deviennent une perte.

Qu'est-ce qui est avec perte?

Lossy est un concept dans lequel les données sont rejetées et peuvent changer, c'est-à-dire mutables. L’immuabilité crée une certaine permanence lorsqu’on parcourt le schéma fonctionnel. Si nous examinons l’exemple mathématique plus tôt, nous ne nous attendons pas à ce que 8 se transformer soudainement en un nombre différent.

Le même concept est appliqué à la programmation fonctionnelle.

Il est important de noter que l'utilisation de const créer de l'immutabilité est un peu un malentendu. Bien que vous ne puissiez pas changer la valeur attribuée en un const, vous pouvez toujours y ajouter, ce qui signifie que const est réellement mutable.

La vraie immuabilité signifie que vous ne pouvez pas changer ou ajouter quoi que ce soit, sinon la valeur devient mutable.

En JavaScript, vous pouvez imposer un certain niveau d’immuabilité en utilisant le Geler() méthode.

Par exemple:

const catDetails = Object.freeze ({ 
nom: 'Tibbers',
âge: 3 ans,
couleur: 'smoking'
});
catDetails.weight = '3 livres';
// Erreur: Impossible d'affecter en lecture seule la propriété 'weight' de l'objet Object

Cependant, cette méthode ne fonctionne que sur la surface et s'applique uniquement au premier niveau d'objets.

Par exemple, ce qui suit est un objet mutable.

const catDetails = Object.freeze ({ 
nom: 'Tibbers',
âge: 3 ans,
couleur: 'Tuxedo',
salutation: {matin: 'miaou', affamé: 'miaou miaou'}
});
catDetails.greeting.night = 'Purrrrr';
console.log (catDetails.greeting);

À un moment donné, vos données vont devoir changer. L’immuabilité ne concerne pas exactement les valeurs attribuées mais la forme du chose vous travaillez avec.

dans le catDetails objets ci-dessus, le premier exemple est immuable parce que Geler() l'empêche de changer de forme grâce à l'ajout de poids. Dans le deuxième exemple, la forme est muté par l'ajout de catDetails.greeting.night

Le gros problème avec l’immuabilité et sa règle stricte dans les modèles fonctionnels est d’assurer un niveau de prévisibilité. Imaginez que vous receviez un objet panier mais que vous vous retrouviez dans une situation difficile, car quelque part le long des lignes, la forme de données attendue de vos articles de panier a changé.

Lorsque vos valeurs attendues sont immuabilité, cela vous permet également de créer des références et d’égaler les valeurs avec des effets secondaires cachés. Les tests deviennent plus faciles car vous savez exactement à quoi s'attendre pour les entrées et les sorties. Avec les modèles fonctionnels, il n’ya pas d’éventualité ni d’ambiguïté à traiter.

Réfléchir de manière fonctionnelle à votre code JavaScript peut aider à réduire les futurs maux de tête lorsque vous essayez de localiser les problèmes.

Comprendre le fonctionnement des modèles fonctionnels peut également décoder votre code en le rendant plus simple. La stabilité à long terme de votre code ne repose pas sur le potentiel de changement. Au lieu de cela, il fait simplement le travail pour lequel il a été conçu - en donnant à votre code un niveau de vaccination contre les dettes techniques.

Les révisions de code et les mises à jour ne se produisent généralement que lorsque des mutations dans la forme des données se produisent. Alors seulement, votre code devra s’adapter aux nouveaux environnements.

Merci pour la lecture.

Aphinya

Afficher plus

SupportIvy

SupportIvy.com : Un lieu pour partager le savoir et mieux comprendre le monde. Meilleure plate-forme de support gratuit pour vous, Documentation &Tutoriels par les experts.

Articles similaires

Laisser un commentaire

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

Bouton retour en haut de la page
Fermer