I campi, come tutti sappiamo, sono i dati che appartengono ad un oggetto. In linea generale e soprattutto nel caso dei campi non statici, quindi d'istanza, questi non devono mai essere esposti direttamente allo sviluppatore come campi pubblici ma devono essere esposti tramite una proprietà pubblica che ne può controllare e gestire i valori assegnati.
Quindi i campi non dovrebbero mai essere definiti public o protected ma sempre private ed esposti tramite proprietà public. Nel caso specifico di campi che devono contenere dei valori costanti prestabiliti e che quindi non potranno mai essere modificati, definirli come costanti. àˆ il caso ad esempio dei valori matematici quali P greco o E (costante di Eulero) di cui infatti si hanno delle costanti statiche nella classe del framework Math.
I valori dei campi costanti (definiti con const) vengono inseriti direttamente nel codice prodotto dal compilatore e quindi non possono in alcun modo essere modificati a runtime.
Per le istanze predefinite (ovvero aventi particolari valori limite o significativi) di particolari oggetti è preferibile utilizzare invece che campi costanti, campi statici pubblici a sola lettura. Un esempio di questa linea guida lo troviamo nei due campi MaxValue e MinValue della classe DateTime che restituiscono rispettivamente una istanza DateTime impostata con il valore di data massimo e minimo che la classe DateTime può supportare.
Evitare di esporre attraverso campi di sola lettura istanze di tipi modificabili. Questo perché, sebbene il campo sia di sola lettura, i tipi modificabili possono essere modificati senza necessariamente dover passare dal campo che ha esposto il tipo. Ad esempio, se esponiamo una istanza di una ArrayList attraverso un campo a sola lettura, non potremo sovrascrivere l'istanza con una nuova ArrayList ma potremo comunque sempre modificare gli elementi contenuti nella ArrayList, aggiungerne di nuovi o cancellarne di esistenti. Questo non accade invece con i tipi non modificabili quali int, string, bool, ecc.