Существует ли соглашение о том, использовать ли свойство для вычисления значения по вызову?Например, если мой класс содержит список целых чисел, и у меня есть свойство Average, среднее значение, возможно, изменится, когда целое число будет добавлено / удалено / изменено из списка, и сделает что-то вроде этого:
private int? _ave = null;
public int Average
{
get
{
if (_ave == null )
{
double accum = 0;
foreach (int i in myList)
{
accum += i;
}
_ave = accum / myList.Count;
return (int)_ave;
}
else
{
return (int)_ave;
}
}
}
где _ave установлен в null, если myList изменен таким образом, что это может изменить среднее значение ...
Есть ли какие-либо традиционные преимущества / недостатки по сравнению с вызовом метода усреднения?
Мне просто интересно, каковы соглашения для этого, так как я создаю класс, который имеет определенные свойства, которые могут быть вычислены только один раз.Мне нравится идея классов, которые получают доступ к этим свойствам, чтобы иметь возможность доступа к свойству по сравнению с методом (так как IMO кажется более читабельным, чтобы рассматривать нечто вроде среднего как свойство, а не метод), но я вижу, где этоможет оказаться запутанным, особенно в том, чтобы убедиться, что _ave установлен в null соответственно.