Maison > interface Web > js tutoriel > Pipe la merde

Pipe la merde

Susan Sarandon
Libérer: 2024-12-08 01:40:11
original
641 Les gens l'ont consulté

Pipe the shit

J'ai beaucoup d'idées pour cet article, mais je ne sais pas par où commencer. Si vous souhaitez rendre le code plus lisible et utiliser le tremblement d'arbre, vous devriez absolument consulter l'article.

Si vous avez déjà développé avec JavaScript, vous avez probablement rencontré ce type de code.

const someInstance = new Class();
someInstance.do('jump').some().thing('dance').and().read();
Copier après la connexion

J'aime ce style car il pourrait être très facile à lire et on voit ce qui est connecté. De plus, vous n'avez pas besoin de déplacer les données d'une fonction à une autre car elles sont toutes enregistrées dans l'instance.

En plus du fait que cela ne fonctionne que si les fonctions ne sont pas asynchrones, il y a un autre problème. Il ne sera pas facile de modifier l'arborescence du contenu si vous ne l'utilisez pas. Si vous l'utilisez dans le client, vous devez déplacer toute la bibliothèque avec toutes les fonctions connectées, ce qui représente une énorme surcharge.

Alors, comment pouvons-nous garder les choses lisibles, utiliser des fonctions asynchrones et laisser Vite et co. arbre secouer tout le code inutilisé ?

La réponse est là, dans le titre : "tuyau".

D'un point de vue fonctionnel, l'implémentation de pipe est assez simple. Cependant, les types posaient un défi. J'ai tout rassemblé dans une bibliothèque et je l'ai publié sur npm. canaliser et combiner.

const inc = (by: number) => (x: number) => x + by;
const dec = (by: number) => (x: number) => x - by;
const multiplyBy = (by: number) => (x: number) => x * by;
const divideBy = (by: number) => (x: number) => x / by;
const toStr = () => (x: number) => x.toString();

// prepare the pipeline
const pipeline = pipe(inc(2), multiplyBy(7), dec(7), divideBy(3), toStr())

// Executing the pipeline
pipeline(7)
Copier après la connexion

Un avantage est qu'il n'est lié à aucun objet, vous pouvez donc utiliser n'importe quelle fonction tant que l'entrée et la sortie correspondent à la fonction avant et après.

L'exemple que j'ai donné est assez simple, mais au moins vous pouvez tout canaliser. Vous aurez les mêmes options qu'avec le chaînage et les classes. Les fonctions génériques sont peut-être un peu plus délicates, mais il existe une solution. J'aborderai cela plus en détail dans un autre article.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:dev.to
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal