QuickLib, un coltellino svizzero per Delphi

Un’analisi ragionata della libreria QuickLib, un autentico coltellino svizzero per Delphi e FreePascal, con i suoi pregi e i suoni difetti.

L’ampiezza, la semplicità e la versatilità di QuickLib ne fanno una libreria da considerare con attenzione per ogni progetto in Delphi.

Da qualche tempo, il GetIt Package Manager di Delphi offre l’installazione di QuickLib, una libreria open source per Delphi e (parzialmente) per FPC che facilita il lavoro su un’ampia gamma di tecnologie. Si può dire, anzi, che è utile per qualsiasi applicazione moderna cross-platform e, a mio avviso, rappresenta un importante valore aggiunto per tutto l’ambiente Delphi/FPC. Ci sono, però, alcune cautele da osservare prima di adottarla definitivamente.

Leggendo le funzionalità offerte da QuickLib, cosa che vi consigliamo di fare subito, salta all’occhio che non si tratta di una libreria specializzata. Le sue aree di lavoro spaziano dall’implementazione di pattern molto di moda, come l’IOC, al supporto per i processi e i servizi di Windows, dalla gestione ad ampio raggio di JSON e YAML al supporto di Linq per liste e array. A tutto ciò si aggiunge una quantità di classi che semplificano l’uso di classi native, dai thread agli array.

In breve, le sue funzionalità ricadono nelle aree seguenti:

  • Attraverso la serializazzione con JSON o YAML, per la gestione dei quali sono fornite classi specifiche, permette di gestire la persistenza degli oggetti, di mappare le proprietà di due oggetti, di gestire configurazioni.
  • Introduce sistemi di indicizzazione e interrogazioni su liste generiche e array, anche attraverso la sintassi Linq.
  • Permette la gestione di file con servizi cloud come Amazon e Azure.
  • Facilita la gestione dei dati anche introducendo nuovi tipi, controlli di validità e un sistema di caching.
  • Implementa il pattern Inversion of Control (IoC).
  • Semplifica la gestione di Thread e Task, anche attraverso lo scheduling dei Task e la gestione di Fail e Retry policies.
  • Contiene classi per interagire con processi e servizi di Windows, per monitorare i cambiamenti di un file.
  • Contiene una classe per creare server HTTP, gestisce l’invio di e-mail con SMTP e aiuta a lavorare con gli indirizzi IP.
  • Aiuta il debug delle applicazioni con strumenti per gestire i log su file e via consolle, e misurare le prestazioni dei metodi.
  • Inoltre, offre alcune funzioni utili per la crittografia, la generazione di password, e il lavoro con date, stringhe, stream e file.

Proprio a causa della sua vastità, quindi, può sembrare un po’ ostica e, almeno nelle sue funzioni più profonde tipo RTTI o Json, inizialmente può esserlo; ma la curva di apprendimento non è tanto piatta da sconsigliarne lo studio, tutt’altro.

Perché sì

I motivi per adottare la libreria QuickLib come strumento di uso quotidiano sono molti:

  • Copre una notevole quantità di esigenze che si incontrano nello sviluppo moderno.
  • Raccoglie alcuni tips presenti sui più popolari siti dedicati alla programmazione, come stackoverflow.com, risparmiando lunghi lavori di ricerca.
  • Il suo codice è, in generale, molto comprensibile e consente di apportare eventuali correzioni in tempi più che ragionevoli.

Perché no

In teoria non ci sono reali motivi per non adottare QuickLib; la pratica, però, suggerisce di usarla con prudenza, perché è un tool non del tutto maturo. La compilazione genera una gran quantità di hint e di warning, segno di una stesura del codice non ancora definitiva.

  • In qualche circostanza, si verificano dei memory leak, che è utile inoltrare con gli eventuali work around all’autore, attraverso le apposite sezioni di GitHub.
  • Un’utile operazione preliminare, inoltre, consiste nell’accertarsi che le parti della libreria che si intende utilizzare siano compatibili con il sistema per cui si sta sviluppando: in alcuni casi, infatti, il supporto per Ios e Android è ancora incompleto.
  • Allo stesso modo occorre verificare la perfetta compatibilità con FPC che, per quanto sia decisamente buona, non sembra ancora del tutto completa.

Sul campo

Applicata a un progetto Open Source di prossimo rilascio, QuickLib ha dato buona prova di sé, riducendo drasticamente il lavoro necessario alla gestione dei file Json; in un altro caso, la parte relativa alle funzioni RTTI è stata sostituita da codice autoprodotto in attesa che alcuni problemi vengano risolti. Complessivamente, la scelta è quella di contuare a usare la libreria contribuendo a segnalare e risolvere i provlemi a mano amano che si incontrano.

Il verdetto

QuickLib è una buona libreria, che complessivamente può aiutare a velocizzare la scrittura di molte operazioni comuni, ma richiede alcune attenzioni. Se non si è disposti a investire un po’ di tempo per controllarne ed eventualmente correggerne i possibili difetti, cercate un’alternativa; in caso contrario, in molte circostanze potrà diventare il vostro coltellino svizzero per Delphi e FPC.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *