Closed APerricone closed 5 years ago
Ciao, grazie. Controllerò il codice appena possibile, sono un po' impegnato questa settimana.
Ciao, ho guardato ma mi sfugge il motivo di un'implementazione così complessa.
La stessa cosa l'ho scritta in 20 righe anziché 70 (vedi branch e commit https://github.com/matteocontrini/comuni-json/commit/e044aad81c679b18c48794f7ba48319a57eb466e), e i due output confrontati mi sembrano uguali. Non ho calcolato la differenza di complessità, ma sul mio computer tutta la build si esegue in 2 secondi, quindi non credo abbia nemmeno senso ottimizzare.
Ci sono in realtà due differenze: nella mia versione il campo delle province si chiama province
anziché provincie
, e l'ordinamento dei comuni è alfabetico anziché per codice ISTAT. Le zone/regioni/province sono invece senza un ordine particolare, ma se si volesse l'ordine alfabetico sarebbero tre righe in più da aggiungere.
Non ho ben capito inoltre quale potrebbe essere il caso d'uso di un file con questo formato, e se quindi ha importanza l'ordinamento alfabetico delle entità. Nella mia mente il file comuni.json (quello "flat") ha lo scopo di essere importato in un database SQL/NoSQL, con relativi indici, quindi la struttura ad albero non sarebbe di utilità.
Grazie
Ciao, la struttura ad albero è molto più piccola e personalmente la uso per data validating. Dando la regione per validare cerco nelle sue provincie e così via. Anche in un database vedrei più logico e ottimizzato in termini di spazio, avere le tabella Nazioni, Zone, Regioni, Provincie e Comuni. Nella mia versione ho dovuto aggiungere qualche comune di San Marino. Certo ho peccato di pre-ottimizzazione, usare la find è molto più lento di cercare in un oggetto, ora non ho il jsperf sotto mano... se non mi credi lo cerco o lo creo.... Poi come opinione personale, l'ordinamento alfabetico mi sembra meno sensato di quello alfabetico... ma direi che è completamente soggettivo.
Relativamente a #31 ho implementato in build.js la creazione della versione ad albero. Credo non sia un problema mantenerle entrambe.
PS. ho cercato di mantenere lo stesso stile del codice