Когда использовать метод GetXXX () и когда свойство Getter - PullRequest
17 голосов
/ 12 января 2011

Есть несколько библиотек .NET, которые используют методы для доступа к объектным данным вместо геттеров, т.е.

Также есть примеры доступа к потоку через свойство, т.е. HttpResponse.OutputStream.

У меня вопрос, когда использовать какую форму доступа и почему?

Ответы [ 4 ]

9 голосов
/ 12 января 2011
8 голосов
/ 12 января 2011

Хороший вопрос. Хотя для пары методов get / set свойство немного больше, чем синтаксический сахар, их следует использовать в разное время.

Как правило, вы должны использовать метод получения свойств, когда:

  • Возвращаемое значение представляет собой полеподобные данные (как правило, примитивы / типы значений, но ссылка на другой объект домена также подходит)
  • Расчет для получения этого значения, если таковой имеется, является относительно дешевым / без побочных эффектов
  • Двойное получение одного и того же значения приведет к получению одинакового значения при одинаковых входных данных

Как правило, вы должны использовать метод получения, когда:

  • Возвращенный объект создан для этой цели (например, фабричные методы)
  • Оценка возвращаемого значения требует побочных эффектов (например, прикосновение к файловой системе, базе данных или изменение других значений)
  • Получение дважды возвращаемого типа даст два разных результата (то есть два потока, соединения БД и т. Д.).

В предложении, если концептуально говоря, требуемое значение является чем-то, что объект должен иметь, используйте свойство. Если требуемое значение является результатом чего-то, что объект делает, используйте метод.

3 голосов
/ 12 января 2011

Хороший вопрос. Эта статья поднимает несколько хороших моментов. В общем, я использую методы, когда вычисления дорогостоящие, и свойства, когда вычисления не дорогие (т.е. возвращается сохраненное значение).

1 голос
/ 12 января 2011

Мое мнение, которое, я уверен, очень быстро достигнет -10, заключается в том, что вы должны использовать свойства только для сериализации. Во всех других случаях явный вызов метода предпочтительнее, потому что, глядя на него, вы знаете, что вызывается метод с возможными побочными эффектами.

Я полагаю, что «правильный» (tm) ответ состоит в том, что когда все, что ваш метод должен сделать, это вернуть значение, то можно использовать метод получения / установки, но если есть какая-либо работа, используйте метод.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...