W Visual Studio 2008 Team System, po prostu uruchomiłem analizę kodu (z menu analizy) w jednym z moich projektów C#. Jednym z ostrzeżeń produkowanych był następujący:C# pole chronione jako prywatne, dodaj właściwość - dlaczego?
Microsoft.Design: Ponieważ pole „Connection._domain” jest widoczny na zewnątrz tego typu stwierdzającej, zmienić jego dostęp do prywatnych i dodać obiekt, z tym samym dostępności jako dziedzinie ma obecnie dostęp do niej.
To odnosi się do następujących dziedzinach:
public abstract class Connection
{
protected string _domain;
}
Nie rozumiem uzasadnienie sugestii. To jest to, co myślę, że chce mi zrobić:
public abstract class Connection
{
private string _domain;
protected string Domain { get { return _domain; } set { _domain = value; } }
}
dwa pytania:
- Czy dobrze rozumiem, co sugestia chce mi zrobić, kod mądry?
- Dlaczego chce, abym to zrobił?
Zobacz także http://stackoverflow.com/questions/1410645/are-public-fields-ever-ok, http://stackoverflow.com/questions/480627/why-wont-anyone-accept-public-fields -in-c, http://stackoverflow.com/questions/1277572/should-i-use-public-properties-and-private-fields-or-public-fields-for-data i kilka innych (szukaj na stronie publicznej pola "). Wszyscy omawiają dziedziny publiczne, ale ogólnie odnoszą się również do pól chronionych. –