2012-04-28 3 views
15

Является ли хорошей практикой использование частного поля или свойства при написании кода в классе, который их содержит?В пределах класса, использующего свойство или поле?

Например, если у меня есть эта пара полей/свойств, классы за пределами этот класс должен использовать этот объект. Что относительно кода внутри класс? Должен ли он использовать частное поле или он должен также пройти через собственность?

private string _foo; 

protected string Foo 
{ 
    get { return this._foo; } 
} 

private void SomeMethod() 
{ 
    string dummyVariable = "snuh" + this._foo; // So, this... 
    string dummyVariable = "snuh" + this.Foo; // ... or this? 
} 

Одно из преимуществ использования имущества здесь, если есть какая-то логика в поглотителе, он все равно будет получить казнены. Мне любопытно узнать, есть ли политика лучшей практики, чтобы следовать здесь.

+1

Мое мнение ** заключается в том, что это не имеет значения (учитывая, что ваша собственность не делает ничего особенного), пока вы последовательны, но мне любопытно, что другие должны сказать. – Tung

+0

Возможный дубликат [Best Practice on local use Private Field x Property] (http://stackoverflow.com/questions/833047/best-practice-on-local-use-of-private-field-x-property) – Matt

+0

Номенклатурная нота: вы неправильно используете термин «переменная». В этом случае вы имеете в виду «поле». –

ответ

8

При использовании Auto-Implemented properties у вас нет выбора - вы must используйте свойство, так как у вас нет никакого доступа к генерируемому запросуобласти.

Если вы владеете не просто и выполняете дополнительную работу (проверка, запуск и т. Д.), Вы должны вызвать свойство, чтобы централизовать доступ и логику.

Если у вас есть какие-либо другие свойства (имеется в виду простое свойство без каких-либо логики и поля подложки) Я бы спросить, почему они не один из выше ...

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

+1

Мне приходят в голову два варианта использования простых, неавтоматических свойств: свойства с исходными значениями, отличными от значения по умолчанию (C#), или свойствами с помощью частного сеттера (VB.NET). – Heinzi

+0

@Heinzi - Правда, и часть моего ответа относительно примера применима и к этим ... – Oded

Смежные вопросы