Perché i fornitori pubblici e privati sono considerati buone pratiche? [duplicare]

7

Perché esattamente gli accessori pubblici e privati come questi:

private string foo;

public string Foo
{
    get
    {
        return foo;
    }
    set
    {
        foo = value;
    }
}

considerato migliore rispetto a quelli pubblici come questo:

public string Foo;

Il risultato finale sembra essere lo stesso.

    
posta Tom Squires 18.11.2011 - 17:55
fonte

4 risposte

14
  1. Le proprietà non hanno la stessa semantica delle variabili pubbliche:

    • Reflection funziona in modo diverso su variabili e proprietà, quindi se ti affidi alla riflessione, è più facile usare sempre le proprietà.
    • Non puoi associare dati a una variabile.
    • La modifica di una variabile in una proprietà è una violazione dell'errore, se decidi di aggiungere la convalida o altra logica in un secondo momento.
  2. Proprietà automatiche rendono più semplice l'utilizzo esclusivo delle proprietà pubbliche.

risposta data 18.11.2011 - 18:21
fonte
0

Quindi puoi proteggere lo stato interno delle tue classi.

Puoi impostare la proprietà affinché la convalida avvenga durante il set (alcuni sostengono che questo dovrebbe essere fatto con un metodo)

Puoi nascondere le variabili che l'utente della classe non dovrebbe mai vedere o modificare.

Non mi interessa il tuo contatore interno, o qualunque altra variabile tu abbia bisogno. E la modifica di alcune variabili in una classe la infrangerà completamente.

    
risposta data 18.11.2011 - 17:58
fonte
0

In questo esempio non è pro babilmente vantaggioso, ma quando i sistemi diventano grandi e complessi può davvero essere utile per limitare un "punto di accesso" delle classi.

    
risposta data 18.11.2011 - 18:23
fonte
-1

Un motivo potrebbe essere che si desidera eseguire alcune convalide o operazioni aggiuntive nel setter.

(Mi dispiace leggere male prima questo, ho modificato la mia risposta)

    
risposta data 18.11.2011 - 18:15
fonte

Leggi altre domande sui tag