Вызов методов с общедоступными / частными членами или передовой опыт методов - C # .NET

Как лучше всего вызывать элементы / поля из частного и открытого методов? Должен ли частный метод всегда вызывать частные поля или они должны вызывать публичные члены?

private string _name;
public string Name
{ 
   get {return _name; }
   set { _name = value; }
}

public void DoSomething()
{
   _doSomething();
}


private void _doSomething()
{
   _name.ToLower();
}

person traderde    schedule 26.05.2010    source источник
comment
Также см. stackoverflow.com/questions/3310186/   -  person nawfal    schedule 03.06.2013


Ответы (2)


Я предпочитаю, чтобы весь код проходил через общедоступный интерфейс, просто чтобы уменьшить количество мест в коде, которые обращаются к фактическому полю поддержки. Две причины

  • Упрощает отладку; если у вас есть проблема, при которой значение изменяется или возвращается неожиданное значение, вы можете установить точку останова внутри средства получения или установки свойства и легко перехватить любой доступ к значению.
  • Уменьшает влияние изменений, вы можете вносить изменения в поле, и это напрямую повлияет на очень немногие места в коде.

Или, говоря одним словом: инкапсуляция.

person Fredrik Mörk    schedule 26.05.2010
comment
+ лоты для инкапсуляции. Как выразился Стив МакКоннелл в Code Complete, без инкапсуляции абстракции тоже нет. - person Cylon Cat; 26.05.2010

В некоторых случаях ваше общедоступное свойство может содержать некоторую логику, которая вам нужна, и в этом случае вы всегда будете использовать свойство вместо локальной переменной, если вы уверены, что хотите использовать частную переменную-член, и не предоставлять эту функциональность для внешний мир, сделайте этот конкретный метод закрытым.

person Pieter Germishuys    schedule 26.05.2010