Как называются эти два типа методов? - PullRequest
2 голосов
/ 15 ноября 2011

Некоторые методы будут выполнять операцию со свойством объекта (не могу придумать пример), но некоторые методы фактически не влияют на свойство объекта, а просто возвращают значение (например, DateTime.Add ()).

Я знаю, что это простой вопрос, но я не знаю, как ссылаться на два типа методов.

Ответы [ 3 ]

4 голосов
/ 15 ноября 2011

Не могу вспомнить первое, но второе можно назвать без побочных эффектов , например, не изменяет состояние . Это не столько то, как вы к нему относитесь, а скорее описание его поведения.

Вы склонны слышать "побочный эффект", используемый в параллельных языках, у Axum была эта концепция.

Например, этот метод не имеет побочных эффектов:

public string GetName()
{
    return "Adam";
}

Принимая во внимание, что этот метод не является:

public int GetTotal(int optionalValue = 0)
{
    _total += optionalValue;
    return _total;
}

Может изменять состояние (в данном случае _total) как часть вызова метода. При следующем вызове _total может совпадать или не совпадать с прошлым в результате самого вызова метода.

Если вы не думаете о установщиках собственности ...

public string Name 
{
    set { _name = value; }
}

... Я не думаю, что существует какой-либо общий термин для описания методов. Большинство методов в объектах так или иначе используют внутреннее состояние - чтение или запись.

2 голосов
/ 15 ноября 2011

Вы можете просто сказать

  • Метод экземпляра
  • Статический метод
1 голос
/ 15 ноября 2011

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

Например, метод доступа к свойству вполне можетследующее для мнимого свойства, которое не сохраняется как DateTime.

DateTime GetOrderDateTime()
{
    return OrderDate.ConvertToDateTime();
}

метод производного свойства будет иметь вид:

DateTime GetNextOrderDate()
{
    return GetOrderDate.AddOneMonth(...);
}

Я намеренно избегаю обсуждения того, что должно бытьсвойства и то, что должно быть методами, при том понимании, что это хорошо определено в контексте, опубликованном OP.

Изменение свойств в этих методах, как говорит Адам, является хорошим способом введения побочных эффектов - лучше всего придерживатьсяхорошие имена (например, ModifyTotal) и соглашения, которые получают методы Get и свойства Get, никогда не должны (обычно) изменять свойства.

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