Uno dei capisaldi più importanti della programmazione è il riutilizzo del codice: reinventare l’acqua calda a ogni progetto fa perdere tempo ed energie e apre la strada all’introduzione di possibili errori. Questo è il motivo per cui è prassi abbastanza comune la creazione di librerie di routine e di funzioni di uso generale, riutilizzabili in più progetti. Questi sono veri e propri progetti indipendenti, con il proprio ciclo di vita, dato che possono essere sottoposti a una continua manutenzione correttiva ed evolutiva: in sintesi viene fatta la correzione degli errori che via via emergono nel tempo e possono anche essere aggiunte nuove funzionalità.
In .NET possiamo agevolmente creare un progetto contenente una libreria di classi e poi aggiungerlo a una soluzione dove il progetto principale farà riferimento all’assembly della libreria. Prima di avviarci nella creazione della nostra libreria, però, conviene dare un’occhiata per verificare se qualcun altro non ci abbia già pensato prima: il posto migliore per guardare è la grande raccolta di librerie distribuita con NuGet (https://www.nuget.org/). Qui potete trovare suppergiù 300.000 pacchetti unici, distribuiti in quasi 4 milioni e mezzo di versioni. Troviamo librerie open source, ma anche versioni proprietarie e quindi una parte dell’offerta disponibile ha una licenza gratuita e il resto è con licenza a pagamento.
NuGet è differente dal Microsoft Store: qui non troverete la possibilità di acquistare direttamente un pacchetto a pagamento e, se li producete, non troverete il modo di venderli attraverso NuGet. Infatti, tra le varie informazioni disponibili per ciascun pacchetto ci sono anche i link alla pagina relativa alla licenza e al sito del produttore, dove potrete acquistare la licenza a pagamento.
Un piccolo esempio
Prima di tutto dobbiamo aver aperto o creato una soluzione in Visual Studio: per il nostro esempio sarà sufficiente selezionare il template Windows Forms App e il linguaggio C#. Non appena avremo una soluzione aperta, possiamo aprire il gestore dei pacchetti NuGet con il menu Strumenti > Gestione pacchetti NuGet > Gestisci pacchetti NuGet per la soluzione.
La finestra ha quattro aree ben distinte (Figura 1):
- una superiore: in questa area possiamo inserire un testo di ricerca tra tutti i pacchetti NuGet, oppure tra quelli installati o, ancora, tra quelli che necessitano di un aggiornamento;
- una sezione a sinistra: in questa area troviamo i pacchetti che sono stati trovati in base al testo di ricerca. Per esempio, se inseriamo il testo “iban”, qui troviamo tutti i pacchetti che includono l’acronimo specificato, cioè lo stesso risultato che otterremmo nel browser Internet alla pagina https://www.nuget.org/packages?q=iban (notate l’opzione “?q=iban”);
- una sezione a destra-superiore: qui possiamo indicare in quale progetto della nostra soluzione vogliamo installare il pacchetto NuGet e la versione del pacchetto stesso;
- una sezione a destra-inferiore: dove troviamo le informazioni sul pacchetto NuGet, tra cui una descrizione, l’autore, il link alla licenza, il numero di download, la data di pubblicazione, l’URL del progetto, le eventuali dipendenze e un link per segnalare eventuali abusi.
Figura 1 – La finestra di gestione dei pacchetti NuGet
Il nostro esempio di progetto avrà l’obiettivo di validare, dal punto di vista formale, un codice IBAN e pertanto vogliamo provare il pacchetto NuGet di nome IbanNet, dato che risulta essere il pacchetto più scaricato e che apparentemente ha un buon supporto (infatti ha parecchie versioni pubblicate e la data di pubblicazione è molto recente).
Attenzione! Il fatto che possiamo validare un IBAN non significa che il conto corrente bancario associato a quel codice sia realmente esistente. Infatti, non possiamo consultare effettivamente il database della banca o di una “banca centrale” per accertarci che quel conto esista veramente, possiamo solo fare una verifica di correttezza formale del codice: dalla verifica potremo dire se il codice è ben formato, cioè se è della lunghezza corretta, se inizia con due caratteri che rappresentano il codice del Paese di appartenenza, che hanno il codice di controllo che corrisponde all’algoritmo di generazione e così via.
Installazione del pacchetto NuGet
L’installazione è veramente semplice: selezionate il progetto in cui volete installarlo e cliccate sul pulsante Installa.
C’è anche un modo per installarlo da una Console (menu Strumenti > Gestione pacchetti NuGet > Console di Gestione pacchetti):
PM> Install-Package IbanNet -Version 5.5.0
Nota: il prompt “PM>” indica che siamo nella Package Manager Console.
In entrambi i casi vedrete apparire varie scritte nella finestra di output e poi una finestra che vi avviserà che Visual Studio sta per modificare la soluzione: cliccando su OK, apporterete le modifiche necessarie per aggiungere il pacchetto NuGet prescelto.
Nella finestra Esplora Soluzioni potrete vedere che nel nodo Dipendenze ora appare anche una voce Pacchetti e all’interno di questa il nostro pacchetto IbanNet in versione 5.5.0 (Figura 2).
Figura 2 – La finestra Esplora Soluzioni con il pacchetto IbanNet
Completiamo il progetto
Ora non resta che aggiungere in controlli e il codice per completare il progetto: prima di tutto aggiungiamo una casella di testo e un pulsante al form.
Con un doppio click sul pulsante, passiamo all’editor di codice e come prima riga aggiungiamo l’importazione della libreria IbanNet:
using IbanNet;
All'interno del gestore dell'evento Click del pulsante, aggiungiamo il seguente codice:
IbanValidator validator = new IbanValidator();
ValidationResult validationResult = validator.Validate(this.textBox1.Text);
if (validationResult.IsValid)
{
MessageBox.Show("IBAN valido");
}
else
{
MessageBox.Show("ATTENZIONE: IBAN non valido!");
}
… e il gioco è fatto!
Il validatore è sufficientemente “intelligente” da validare correttamente sia un codice IBAN scritto di seguito, senza spazi, sia un codice IBAN scritto a blocchi di 4 caratteri alfanumerici separati da spazi.
Provate con vari codici IBAN e vedrete che funziona davvero, senza il minimo sforzo da parte vostra. Ora potrete aggiungere questa funzionalità nei vostri progetti e fare anche bella figura con i vostri datori di lavoro o con i vostri clienti.
Conclusione
In questo articolo abbiamo visto come trovare e aggiungere un pacchetto NuGet a un nostro progetto, cioè una libreria distribuita in formato compilato, per inserire delle funzionalità già studiate e realizzate da altri sviluppatori, senza dover reinventare l’acqua calda e quindi senza perdere tempo, né rischiare di introdurre errori indesiderati.
Come valore aggiunto, avete conosciuto una libreria che controlla e valida dal punto di vista formale un codice IBAN, così che ora potete inserire questa funzionalità nei vostri progetti.