Come dice il suo sito web, React è Una libreria JavaScript per costruire interfaccie utente (A JavaScript library for building user interfaces). Purtroppo spesso viene usato anche per fare altre cose. Questo rende le nostre applicazioni poco testabili, manutenibili e scalabili.
In vari corsi a giro su internet da 50 ore su react, si passano circa 5 ore a spiegare React, e le restanti a parlare del resto. In questo testo non si parla di React, ma di tutto il resto.
L’obiettivo che vorrei raggiungere è dare gli strumenti per rendere il codice di una applicazione React pulito, testabile, manutenibile e scalabile all’infinito
La premessa che voglio fare è che NON sono un Guru. La differenza tra me e un GURU è che ametto apertamente di essere facilmente sopraffatto dalla complessità dei framework UI. Ma quello che mi piace essere in grado di fare, è implementare modelli e approcci che permettano a noi sviluppatori di essere in controllo del codice delle applicazioni, e non subire l’architettura dei framework.
Molti sviluppatori e "capi reparto" sembrano non avere le giuste priorità. Questa è la prima e più importante cosa da considerare.
Per esempio, quando si esaminano le offerte di lavoro per sviluppatori, si nota che l'elenco delle competenze richieste spesso include tecnologie e framework come React, Angular, Springboot, Jest, ecc.
Di rado, si vedono argomenti più astratti come i principi SOLID, DI (dependency inversion), container IOC (inversion of control) o TDD (test driven development).
Possiamo classificare questi argomenti come "software design" e "software development". Il design si concentra sulla qualità, lo sviluppo sulla semplice realizzazione.
Ho lavorato nella parte front-end per abbastanza tempo nella mia carriera, argomenti come i principi SOLID e i concetti generali di progettazione del software non sono così comuni come nel mondo back-end.
L’idea di questo testo nasce con l’esigenza di colmare il gap
Invece di concentrarsi sulle infinite tecnologie e framework, dovremmo concentrarci sull'apprendimento delle regole che governano come usiamo quelle tecnologie e framework.