DanLevy.net

Trappole nella Documentazione delle Promise

Evitare problemi derivanti dalla documentazione più diffusa

Hero image for Trappole nella Documentazione delle Promise

Individuare gli anti-pattern delle Promise nei risultati di ricerca di Google e nelle librerie più diffuse.

craig-whitehead-433328-unsplash.webp

Parto da una confessione: mi sono reso colpevole anch’io di scrivere gli stessi “anti-pattern” che critico qui sotto, e sono certo che molti sviluppatori JS abbiano fatto altrettanto. Nulla di quanto espongo è pensato come attacco personale o rivolto direttamente agli autori originali. Sto semplicemente facendo una code review di pattern comuni — spero di trasmettere una comprensione delle mie priorità e del mio processo di pensiero critico.

Con un po’ di fortuna, dopo aver esaminato questo progetto sarete in grado di riconoscere i segnali d’allarme delle Promise scritte male.

  1. CallbackHell.com
  2. StrongLoop
  3. RisingStack
  4. Q Library

CallbackHell.com

CREDIT: http://callbackhell.com/ CallbackHell.com


StrongLoop

CREDIT: https://strongloop.com/strongblog/node-js-callback-hell-promises-generators/ strong loop


RisingStack

CREDIT: https://blog.risingstack.com/node-js-async-best-practices-avoiding-callback-hell-node-js-at-scale/ Questo è un articolo piuttosto solido. Ho solo un’osservazione:

Rising Stack


Q Library

CREDIT: https://github.com/kriskowal/q

La libreria Q è una delle più utilizzate e delle più antiche ad essere associata alle “Promise”. Per questo soffre di esempi datati e della necessità di mantenere la retrocompatibilità. Dico “associata alle ‘Promise’” perché ritengo che Q ruoti in realtà attorno al pattern deferred.

Potrà assomigliare alle Promise, ma io insisto che non lo è. Ha una superficie d’interfaccia fin troppo ampia, e per tutte le ragioni sbagliate. Inoltre la convenzione di denominazione abbrevia i nomi in modo incoerente, rendendo più difficile memorizzare l’interfaccia. Metodi come when e done non sono necessari.

In sintesi: il pattern deferred è un anti-pattern doloroso — non migliora praticamente nulla rispetto al tipico approccio basato su callback.

q first example

q xmlHTTP deferred anti-pattern

Date un’occhiata (e mettete una stella) al progetto GitHub compagno di questo articolo, Escape From Callback Mountain

Obiettivo del progetto: ricercare e sviluppare migliori pattern di linguaggio funzionale in JavaScript.