Originariamente inviato da Kahm
valori non consentiti?
prima di valorizzare queste variabili nella classe c'è sempre una funzione di controllo che gestisece probabili errori di inserimento nelle caselle di testo di una form
futura elaborazione?
sinceramente in tutti i progetti non ho mai avuto l'occasione di impostare variabili a sola lettura o via dicendo
Non è faccenda di verificare le caselle di testo, il concetto è che la logica della classe deve restare il più possibile slegata da quella dell'interfaccia grafica, prevenendo così anche gli errori del programmatore. Ti faccio qualche esempio, da una mia classe per la gestione delle finestre:
codice:
Public ReadOnly Property Handle() As IntPtr Implements IWin32Window.Handle
Get
Return mHandle
End Get
End Property
Ovviamente l'handle non deve essere modificato dall'esterno della classe (pena casini inenarrabili), per cui impedisco non all'utente, ma allo stesso programmatore di modificarlo.
codice:
'Restituisce o imposta gli stili
Public Property Styles() As WindowStyles
Get
Return GetWindowInfo.WindowStyles
End Get
Set(ByVal Value As WindowStyles)
CheckHandle()
If SetWindowLong(Handle, Declares.SetWindowLongIndex.RedefStyles, Value) = 0 Then
Throw New System.ComponentModel.Win32Exception()
End If
End Set
End Property
Qui ovviamente si rende necessaria una property, perché si incapsula l'accesso ad una risorsa unmanaged.
codice:
/// <summary>
/// Size of the drive.
/// </summary>
[Description("Size of the drive."),Category("Behavior")]
public long TotalSpace
{
get
{
return totalSpace;
}
set
{
if (value<=0)
throw new ArgumentException("TotalSpace must be greater than 0.","TotalSpace");
if (newFilesSpace+usedSpace>value*2)
throw new ArgumentException("NewFileSpace + UsedSpace mustn't exceed TotalSpace * 2.");
totalSpace = value;
this.Refresh();
}
}
Questo esempio invece è in C# e viene da un controllo che mostra lo spazio usato su un disco; come si può vedere il campo locale totalSpace viene incapsulato dalla proprietà TotalSpace che, oltre ad aggiornare la visualizzazione, a scanso di equivoci ne verifica il valore.