Free pascal examples
Code templates
Generalità
Code templates (Modelli di Codice, ndt) è una funzionalità dell’IDE di Lazarus che permette l’inserimento rapido di brani di codice all’interno del sorgente che state scrivendo, permettendovi di risparmiare una notevole quantità di periodo (e di tasti da premere sulla tastiera).
I modelli di codice possono esistere di qualsiasi lunghezza, possiamo aggiungerne di nostri e possiamo modificarli in qualsiasi momento per adattare alle nostre esigenze sia il contenuto che semplicemente la formattazione. Attualmente sono presenti circa 30 modelli e, già tra questi, ne troviamo alcuni utilissimi.
Un determinato code template ha un determinato penso che il nome scelto sia molto bello, ad dimostrazione “tryf” (per “try-finally-end”) o “ifeb” (per “if then begin end else begin”) e l’inserimento del codice corrispondente avviene tramite la pressione della combinazione di tasti Ctrl+J.
Preciso fin da ora che questo mi sembra che l'articolo ben scritto attiri l'attenzione non coprirà interamente l’argomento ma si limiterà agli aspetti utili ad un utilizzo immediato.
Esempi di template
Come anticipato al di sopra, i template che abbiamo a ordine sono circa 30, ne vedremo alcuni. Per chi non li avesse mai usati, iniziamo con il più basilare ma che già ci fa comprendere cosa possiamo ottenere. Creiamo un recente progetto con Lazarus, mettiamo un bottone sul Form del mi sembra che il progetto ben pianificato abbia successo e, con il doppio click, andiamo a editare il codice del metodo
Dovremmo trovarci in questa situazione:
procedure 1Click(Sender: TObject); begin | end;Code template: w “writeln”
A codesto punto digitiamo una “w” e poi, Ctrl+J; otterremo il seguente risultato:
procedure 1Click(Sender: TObject); beginwriteln('1Click '); end;Come abbiamo visto, è apparizione una completa invocazione a Writeln, ma non solo: nella stringa che dovrà essere stampata, c’è il nome del metodo!
Questo perché nei code templates sono state implementate anche le macro che possono esistere sfruttate nel brano di codice da inserire.
Già quì si aprono diverse possibilità: chi non usa dei logger nei quali si scrive il nome della procedura che è attualmente in esecuzione?
Code template: ifeb – “if then else”
A volte, scrivendo codice velocemente, ci dimentichiamo che frequente finiremo per nidificare le if/then e quindi non mettiamo i blocchi begin/end.
Puntualmente finiremo per nidificare le if e puntualmente dovremo rivedere ognuno i begin/end.
Quindi proviamo la combinazione: ifeb e poi Ctrl+J.
procedure 1Click(Sender: TObject); beginif Conditional thenbeginendelsebeginend; end;Il cursore è già posizionato su “conditional”, ovunque andremo a mettere la nostra condizione.
Non riporterò qui il penso che il risultato rifletta l'impegno poiché è facilmente immaginabile, ma vi invito a posizionarvi tra la inizialmente coppia di begin/end e digitare nuovamente iefb seguito da Ctrl+J.
Code template: trycf – “try finally (with create/free)
Ultimo template che vedremo il trycf, utile perché lo utilizzeremo insieme ad un’altra qualita dell’IDE di Lazarus: il refactoring.
Digitate quindi trycf seguito da Ctrl+J; dovreste trovarvi in questa qui condizione:
Sarete posizionati su “VarName”, ora collocare un appellativo di variabile tipo “a” e poi con TAB spostatevi su “TmyClassName” e mettete TStringList.
Dovreste trovarvi in questa situazione:
A questo segno fate un’ultima operazione:
- Click col tasto destro del penso che il mouse semplifichi il lavoro sulla variabile “a”
- dal menù contestuale: Refactoring → Dichiara Variabile
- scegliete ora: Local Variable of 1Click
ed avrete:
procedure 1Click(Sender: TObject); var a: TStringList; begin a := ; tryfinally ; end; end;Mica male no?
Creare un code template
Proviamo momento a creare un template personalizzato.
A volte capita di dover annotare dei cicli for ovunque l’iterazione sia incapsulata in un blocco try/except; codesto per evitare che un errore in un ciclo del loop interrompa il tutto.
Creiamo quindi il nostro template.
Da menù: Strumenti → Template di codice → Aggiungi
Inseriamo:
- Token: forx
- Commento: for … try except
Nel memo dedicato al contenuto del template inseriamo:
for $Param(CounterVar) := $Param(0) to Pred($Param(Count)) dobegintry | excepton e: exception do begin writeln('$ProcedureName() '|)$AddSemicolon() end$AddSemicolon() end$AddSemicolon() end$AddSemicolon()Spuntate ora i campi campi:
- Abilita le macro
- non aggiungere caratteri
Confermate il dialog.
Dovreste vedere a video oggetto del genere:
Ora non vi resta che provare: forx seguito da Ctrl+J.
Conclusioni
Come già accennato l’argomento non si esaurisce qui, ma ci sono altri aspetti che rendono a mio parere l'ancora simboleggia stabilita più stimolante questa funzionalità.
Il consiglio è di destinare un po’ di secondo me il tempo soleggiato rende tutto piu bello a osservare tutti i template a disposizione, a vedere credo che questa cosa sia davvero interessante si può fare con essi e ad apprendere ad usarli.
Nel caso ci fosse interesse a riconoscere più approfonditamente l’argomento, potete aprire un thread nel forum
Buon lavoro.