Come scrivere una applicazione manutenibile in NodeJS

Vediamo come utilizzare Node.JS per scrivere applicazioni professionali che siano facilmente manutenibili e leggibili attraverso un esempio pratico.

Soluzione elementare

Prima di vedere la soluzione basata su un’architettura professionale, diamo un’occhiata a quella che potrebbe essere l’implementazione più semplice e intuitiva dei requisiti. Per semplicità eviteremo di considerare la callback scritta dall’utente, limitandoci a vedere quale dovrebbe essere il codice essenziale. La soluzione elementare potrebbe essere la seguente:

il codice qui sopra è strutturato usando delle callback anonime nidificate (e quindi indentate) l’una dentro l’altra. Se confrontiamo il codice coi requisiti (ipotetici) di pagina precedente, vedremo che il codice realizza tutti i compiti previsti. L’unico aspetto che abbiamo tralasciato è quello della callback scritta dall’utente, che per il momento non ci interessa: vedremo come gestire la callback dell’utente a pagina seguente, quando discuteremo la soluzione professionale.
La prima critica (un po’ superficiale) al codice qui sopra riguarda l’indentazione del codice: si potrebbe pensare che se avessimo qualche decina di funzioni nidificate l’una dentro l’altra, il codice diventerebbe leggibile semplicemente perché la pagina dell’editor non è abbastanza larga. Questa obiezione si risolve facilmente usando delle callback non anonime, come vedremo tra poco.
La seconda obiezione riguarda proprio la callback definita dall’utente. In uno scenario professionale, probabilmente la nostra funzione verrà chiamata nel seguente modo:

La domanda a questo punto è: come possiamo gestire l’inoltro della callback attraverso l’albero delle funzioni nidificate, senza complicare il codice né della libreria, né dell’utilizzatore? La soluzione professionale che vedremo tra poco risolve tutti questi problemi.