В этом случае это не так важно, но в тех случаях, когда вы используете переменные с отложенной загрузкой, это будет иметь значение, и вы получите доступ через свое свойство.Например:
private Myobject _value;
public Myobject Value
{
get
{
if (_value == null) _value = new MyObject();
return _value;
}
}
private MyObject DoSomething();
{
//If you access _value here, it might be null...
//so you should access it through the property:
return Value;
}
В случае, если ваш метод потерпит неудачу, вызвав поле напрямую, вы либо обрабатываете его правильно, либо обращаетесь к нему более чистым методом - через свое свойство.
Все это сводится к архитектуре вашего приложения, и для этого вам нужно задать вопрос: что наиболее целесообразно с точки зрения обслуживания?
Я бы сказал, что если поле инициализировано правильно иэто не вызывает у вас головной боли, чтобы получить к нему доступ напрямую, а затем получить к нему доступ напрямую.Если это приводит к дополнительной работе (и, следовательно, к дополнительному обслуживанию), обратитесь к имуществу.
Как и все остальное, взвесьте все за и против.Используйте свой собственный здравый смысл - войны за стандарты - это смешное отвлечение.Если они не предоставят вам аргументы, которые вы еще не подумали о себе, не тратьте свое дыхание, сражаясь с ними.Если у вас есть действительная причина для выбора того пути, который вы выберете, то этот путь является правильным - он сводится к прерогативе дизайнера.
Мои мысли о плюсах и минусах таковы:
Переход со свойством:
- Я могу изменить реализацию того, как это значение возвращается без необходимости рефакторинга всего моего класса.
- Я могу лениво загрузить значениеЭто означает, что если я никогда не получу к нему доступ, он никогда не потратит впустую ресурсы.
- Я могу скрыть все детали реализации того, как значение возвращается в одном месте, без необходимости обрабатывать его по всему коду.
Работа с полем:
- У меня нет потенциальной нагрузки на производительность из-за необходимости шагать по коду свойства каждый раз, когда я получаю доступ к значению.
- Мне нужно убедиться, что значение инициализируется должным образом при каждом вызове, или обрабатывать случаи, когда это не так.
- I может повлиять на значение, даже если мое свойство может предоставить толькодоступный только для чтения интерфейс для моего значения.
Так что я думаю, мой подход будет заключаться в использовании свойства , если мне не нужно было записывать значение непосредственно,в этом случае я бы пошел с полем - так как мое свойство доступно только для чтения и, следовательно, не может быть записано.
Это только я - ваше свойство может быть доступно для чтения / записи, и вы можете решитьс точки зрения дизайна, что прямой доступ к полю - это нормально, и это тоже нормально.
Хитрость в том, что всегда делают что-то по какой-то причине, не делайте вещи вслепую только потому, что .