В кодовой базе, которую я поддерживал, я нашел этот точный класс, вставленный ниже. В свойстве logPath
gets
выполняет некоторую работу. Я бы подумал, что лучше сделать работу в set
- так будет сделано только один раз. Однако, отчасти потому, что так написан класс, отчасти потому, что это свойство, отображаемое в xml, и отчасти потому, что я боюсь, что могу что-то упустить в отладчике, у меня есть сомнения.
Кроме того, если элемент никогда не существовал в xml, и он оказался необязательным, тогда я думаю, что получу ноль для значения. Я мог бы на самом деле хотеть провести различие между отсутствием элемента и получением пустого значения. Я полагаю, что у меня может быть личный член bool
, который может помочь мне обнаружить это - это было бы аргументом для работы в set
, а не get
. Итак, в настоящее время оптимизаторы кода усердно работают, поэтому производительность редко вызывает серьезную озабоченность. Это скорее «разобраться с этим один раз и не думать об этом позже». Это только один пример, и свойства часто делают некоторые массажи.
Не могли бы вы сказать, что всегда лучше работать в set
? В get
? Это зависит? Смешанный стиль не будет вас беспокоить, пока он работает?
Спасибо.
namespace MyNamespace
{
using System;
using System.Xml.Serialization;
/// <summary>
/// The LoggingListener class encapsulates the "logListener"
/// element of config file, and puts the "logPath"
/// attribute in a file path string.
/// </summary>
public class LoggingListener
{
private string logPathValue;
/// <summary>
/// Gets or sets the LOCAL file path to a log file
/// which will be written during operation of the Updater.
/// </summary>
[XmlAttribute("logPath")]
public string LogPath
{
get
{
return this.logPathValue == null ?
String.Empty : this.logPathValue;
}
set
{
this.logPathValue = value;
}
}
}
}
РЕДАКТИРОВАТЬ: В данном примере ... если файл журнала не существует, то регистрация не должна проводиться.