Как назвать метод с выходным параметром? - PullRequest
1 голос
/ 16 ноября 2009

Как обычно предпочитают называть метод, в котором есть выходной параметр?

Обычно я использую Get в качестве префикса, чтобы упомянуть, что метод возвращает значение (например, GetMyBusiness).

Но что, если есть параметр out, который будет установлен после вызова метода? Должно ли имя метода упоминать об этом и фокусироваться только на возвращаемом значении?

спасибо!

Ответы [ 5 ]

1 голос
/ 16 ноября 2009

В номенклатуре нет стандартов. Однако, если ваш метод будет работать с составными типами, рассмотрите возможность принятия соглашения об использовании Get ... и ... (), чтобы указать, что происходит две вещи. Например:

int GetPopulationAndMeanAge(out double meanAge)
{
    // ...
    meanAge = CalculateMeanAge();
    return totalPopulation;
}

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

Преобразование предыдущего в составной тип (C #):

public class PopulationStatistics {
    int Population { get; set; }
    double MeanAge { get; set; }
}


PopulationStatistics GetPopulationStatistics()
{
    // ...
    return new PopulationStatistics { Population = totalPopulation, MeanAge = CalculateMeanAge };
}
1 голос
/ 16 ноября 2009

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

0 голосов
/ 16 ноября 2009

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

Сказав это, Get должно быть в порядке.

0 голосов
/ 16 ноября 2009

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

Int32.TryParse("123", out number);
0 голосов
/ 16 ноября 2009

Почему бы не вернуть этот параметр?

В любом случае, вы можете использовать префикс «изменить» или «обработать».

...