Buona domanda. Sebbene una proprietà sia poco più dello zucchero di sintassi per una coppia di metodi get/set, è necessario utilizzarne due in tempi diversi.
In generale, è consigliabile utilizzare un getter struttura in stile quando:
- Il valore deve essere restituito rappresenta i dati dei campi-simile (in genere primitivi tipi/valore, ma un riferimento a un altro oggetto di dominio è anche bene)
- il calcolo eventuale di produrre tale valore è relativamente economico/effetto collaterale libero
- ottenere lo stesso valore due volte per produrre lo stesso valore dato gli stessi ingressi
In genere, è necessario utilizzare un metodo getter quando:
- L'oggetto restituito viene creato per lo scopo (ad es. metodi di fabbrica)
- La valutazione del valore restituito richiede effetti collaterali (ad es. toccare un file system, database o modificare altri valori)
- Ottenere il tipo di ritorno due volte produce due risultati distinti (cioè due flussi, connessioni db, ecc.) .
In una frase, se concettualmente il valore necessario è qualcosa l'oggetto HA, utilizzare una proprietà. Se il valore necessario è il risultato di qualcosa che l'oggetto FA, utilizzare un metodo.
Che afferma che è male avere proprietà che restituiscono array. Qualcuno può approfondire * perché * questo è male? –
Poiché il contenuto dell'array può essere modificato in qualsiasi valore arbitario da chiunque possa ottenere un riferimento ad esso: http://blogs.msdn.com/b/ericlippert/archive/2008/09/22/arrays-considered- some-nocivo.aspx – thecoop
Se si restituisce un array da una proprietà, si restituisce effettivamente un puntatore a tale matrice. Questo significa che l'hai fatto improvvisamente in modo che un altro codice possa modificare il tuo array, anche se non fornisci un metodo setter. Quindi il contenuto dell'array potrebbe essere cambiato senza che tu lo sappia. – GendoIkari