L’uso delle variabili $1, $2 e $n nel codice non solo rende il codice meno leggibile, ma può anche aumentare la confusione, poiché il cervello umano può avere difficoltà a ricordare a cosa corrispondono queste variabili. La soluzione è creare una variabile con un nome comprensibile e assegnarle il valore di $1, $2 o $n.
In 4D v18 R5 c’è una buona notizia: ora è possibile assegnare un nome ai parametri quando si dichiara un metodo di progetto:
- un metodo di progetto,
- un trigger
- un metodo di database
- un metodo di un modulo
- un costruttore di una classe
- una funzione di una classe.
Vediamo come!
In 4D v18 R4 abbiamo mostrato una nuova sintassi per dichiarare le variabili:
var $name : Text
var $birthdate : Date
var $file : 4D.File
La nuova sintassi per metodi e funzioni è molto simile.
Nuova dichiarazione per le classi
Dopo il nome della funzione, aggiungere i vari parametri di ingresso separati da un punto e virgola tra parentesi:
Class Constructor($firstname: Text; $lastname: Text; $birthdate: Date)
This .lastName:=$lastname
This .firstName:=$firstname
This .birthdate:=$birthdate
Function setAdress ($streetNumber: Text; $streetName : Text; $city : Text)
This .streetNumber:=$streetNumber
This .streetName:=$streetName
This .city:=$city
Per il parametro di uscita, basta aggiungere il simbolo “->”, quindi il nome e il tipo come per il parametro di ingresso.
Function getFullname -> $fullname: Text
$fullname :=This.firstName+" "+Upper(This.lastName)
Function sendMessage ($text: Text) -> $message: Text
$message :="@"+This.firstname+": "+$text
Nuova dichiarazione per i metodi
Lo stesso principio si applica ai metodi con una nuova parola chiave: #DECLARE.
- Un esempio con un metodo del progetto “highlightRow” “:
#DECLARE($listboxName: Text; $rowNum: Integer)
LISTBOX SELECT ROW (*; $listboxName; $rowNum)
- Un esempio con il metodo On Web Authentication metodo database:
#DECLARE($url: Text; $header: Text; \
$BrowserIP : Text; $ServerIP: Text; \
$user : Text; $password: Text) \
->$RequestAccepted: Boolean
$entitySelection :=ds.User.query("login=:1"; $user)
// Check hash password...
// ...
Debugger
Il nome del parametro è visibile anche nel riquadro della catena di chiamate del debugger. Ecco un esempio con una funzione di classe:
Bonus
Se avete bisogno di un ulteriore motivo per utilizzare la nuova sintassi, date un’occhiata all’immagine qui sotto. Sì! La dichiarazione della funzione viene visualizzata nella barra di stato esattamente come avviene per i comandi 4D.