Подтвердить что ты не робот

Когда использовать метод GetXXX() и когда свойство Getter

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

Также есть примеры доступа к потоку с помощью свойства i.e HttpResponse.OutputStream.

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

4b9b3361

Ответ 2

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

Как правило, вы должны использовать getter в стиле свойства, если:

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

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

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

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

Ответ 3

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

Ответ 4

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

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