Я обычно преобразовываю свойство в функцию, если оно имеет одно из следующих поведений
При принятии решения об использовании свойства или метода следует также учитывать объем работы, которую требует метод. Т.е. если извлечение значения относительно дешево, используйте свойство, если дорого - метод.
Я нашел интересный текст об этом
MSDN | Свойства против методов
EDIT
Там говорится следующее:
Используйте свойство, когда
Используйте метод, когда
Я лично выбираю сложность и то, что будет делать метод / свойство. Если я просто устанавливаю значение, например _name = something ;, то я использую свойство. Даже если я собираюсь выполнить очень простые вычисления или условные выражения, я буду придерживаться свойства. Но если что-то требует серьезной или даже умеренной работы, я бы использовал метод. Ничто не раздражает меня больше, чем установка свойства, и внезапно выполняется целая куча кода, больше, чем я ожидал.
Еще одно соображение - возможность привязки. Большинство фреймворков могут привязываться только к свойствам. Например, если вы хотите, чтобы IsValid можно было использовать в привязке (скажем, в качестве источника привязки для свойства IsEnabled кнопки OK), тогда это должно быть свойство, а не метод.
Если вы можете рассчитать что-то из того, что у вас уже есть, используйте методы, если ваше значение должно быть основой для работы или расчета чего-то еще, оно должно быть имущество.
Например, если вы хотите проверить, обновлен ли определенный пользовательский ввод, и вы можете сделать это с помощью своего уникального запатентованного алгоритма, используйте метод Validate ()
. Если пользователь просто отправляет вам форму, в которой указывается, что текущий адрес действителен, используйте свойство valid
. Но это просто общий подход, который может варьироваться в зависимости от того, чего вы на самом деле хотите.