Nella programmazione in AL, ci imbattiamo spesso in strutture simili per non dire identiche tra di loro. Un esempio tipico è una piccola tabella di anagrafica di base fatta di soli due campi: un campo Code di dieci caratteri e un testo di 50. Ho creato questa tabella centinaia di volte in tanti anni.
Con l’introduzione del linguaggio AL e di Visual Studio Code, oggi possiamo utilizzare gli snippet per creare oggetti standard (es. ttable per una nuova tabella, tpage per una nuova pagina ecc), ma possiamo anche creare i nostri snippet personali.
Vediamo quindi come creare uno snippet che generi la tabella di esempio.
Snippet personalizzati
Per creare nuovi snippet in Visual Studio Code, dobbiamo selezionare il tasto delle impostazioni e premere User Snippets (in italiano è stato tradotto con Frammenti utente - personalmente lo avrei lasciato in inglese, ma questa è un’altra storia).
Questo menu apre l’editor del file al.jason, all’interno del quale possiamo inserire i nostri snippet.
I commenti presenti nel file ci aiutano a capire la sintassi da usare per la loro creazione. Nel nostro caso avremo
L’istruzione “prefix” definisce la stringa che attiva lo snippet, mentre nell’istruzione “body” va scritto il codice da generare. La stringa \t è semplicemente l’escape character TAB che indenta il codice. Si tenga presente che gli spazi tra un escape character e l’altro non sono necessari, li ho voluti usare in questo contesto per rendere il codice più leggibile. Il nostro codice, in altri termini, andrebbe scritto così:
Adesso creiamo un nuovo file .al e iniziamo a digitare il “prefix”. Quello che vediamo è il nostro nuovo snippet
col risultato finale
Il codice deve essere completato con l’ID e il nome della tabella.
Variabili
Nella creazione di uno snippet è anche possibile definire alcune variabili che l’utente dovrà valorizzare una volta richiamato lo snippet stesso.
Supponiamo, per esempio, di voler chiedere all’utente di specificare il nome del primo campo, al posto di fissarlo noi stessi. Dovremmo scrivere così:
La stringa ${1:FirstField} definisce una variabile sulla quale l’utente verrà posizionato quando preme il tasto di tabulazione dopo aver richiamato lo snippet
La stessa variabile può venire usata in diversi punti; nel nostro caso, per esempio, potremmo usarla anche nella definizione della chiave primaria della tabella
in modo tale che quando l’utente inserisce il nome del campo, questo venga anche scritto nella sezione key.
Le variabili possono essere più di una all’interno dello stesso snippet; il numero intero che la identifica corrisponde al numero di volte in cui l’utente dovrà premere il tasto di tabulazione per posizionarcisi sopra.
Conclusione
Con gli snippet personalizzati possiamo davvero accelerare il nostro lavoro quotidiano di programmazione, preimpostando proprietà che magari abbiamo la tendenza a dimenticare o delle quali magari ogni volta dobbiamo verificare la sintassi, o creando oggetti standard anche complessi, con righe di codice già scritte al loro interno.
A fronte di un lavoro iniziale magari un po' noioso di scrittura dello snippet, il risparmio in termini di tempo di scrittura del codice sarà comunque sensibile.
Comments