Вы должны определенно использовать метод, потому что доступ к этому элементу делает что-то. Вызов метода — хороший способ позволить коду говорить самому за себя в этом отношении.
Или, если вы предпочитаете другую перспективу: два последующих обращения к элементу вернут разные результаты. Хорошим практическим правилом является использование метода всякий раз, когда это имеет место, чтобы не нарушать принцип наименьшего удивления.
Это выглядит так, как будто он читает результат переменной, хотя если вы знаете, что NewTRequired
является свойством (а не полем), вы также знаете, что на самом деле он выполняет произвольный код:
var prototype = Factory.NewTRequired;
Я намеренно поместил результат в переменную с именем prototype
, чтобы лучше показать, что даже информированный читатель этого кода может быть легко сбит с толку: было бы разумно увидеть это и подумать «верно, значит, NewTRequired
является прототипом объекта для ИКС". Этот читатель наверняка был бы поражен результатом кода, подобного этому:
var eq = object.ReferenceEquals(prototype, Factory.NewTRequired);
Сравните это с фабричным методом. Теперь этот код может издавать легкий запах:
// hmmm... are we actually using this as a prototype?
// because it sure looks like an instance created just for the occasion.
var prototype = Factory.NewTRequired();
И этот код вас никогда не удивит:
// obviously should be false, the code screams "I am creating new instances!"
var eq = object.ReferenceEquals(Factory.NewTRequired(), Factory.NewTRequired());
Известный пример того, как это правило действительно должно было соблюдаться. но не было это DateTime.Now
собственность.
person
Jon
schedule
15.07.2013