Как вы упомянули, это сюрприз для пользователя класса. Люди привыкли делать подобные вещи со свойствами (надуманный пример приведен ниже):
foreach (var item in bunchOfItems)
foreach (var slot in someCollection)
slot.Value = item.Value;
Это выглядит очень естественно, но если item.Value
на самом деле попадает в базу данных каждый раз, когда вы получаете к ней доступ, это будет небольшая катастрофа, и ее следует записать в следующем порядке:
foreach (var item in bunchOfItems)
{
var temp = item.Value;
foreach (var slot in someCollection)
slot.Value = temp;
}
Пожалуйста, помогите людям, использующим ваш код, избегать подобных скрытых опасностей и добавьте медленные методы, чтобы люди знали, что они медленные.
Конечно, есть некоторые исключения. Ленивая загрузка хороша, пока ленивая загрузка не собирается занимать какое-то безумно большое количество времени, и иногда создание свойств свойств действительно полезно по причинам, связанным с отражением и связыванием данных, поэтому, возможно, вы захотите согнуть это правило. Но нет смысла нарушать конвенцию и нарушать ожидания людей без какой-либо конкретной причины для этого.