Функции должны начинаться с «Get»? - PullRequest
7 голосов
/ 23 января 2010

Я пытаюсь взглянуть на стандарты кодирования C #, чтобы сделать мой код более красивым и стандартным, и у меня есть вопрос: должны ли функции (методы, которые не являются пустотами), согласно стандартам кодирования C #, начинаться с Получить"? Например: "GetSongOrder()", "GetNextLine()" и т. Д.

Спасибо.

Ответы [ 6 ]

24 голосов
/ 23 января 2010

Есть два случая:

Если процедура может «получить» значение очень быстро, не вызывая побочных эффектов в коде, я рекомендую использовать свойство getter и опустить имя «get»:

public SongOrder SongOrder
{
   get { return this.songOrder; } // ie: an enum
}

Если, однако, требуется обработка, то подходит метод с именем «Get ...». Это говорит о том, что при вызове этого метода могут возникнуть побочные эффекты, такие как дополнительная обработка или изменение какого-либо состояния:

public string GetNextLine()
{
    string line = this.stream.ReadLine(); // This may cause a longer running operation, especially if it's using Disk IO/etc
    // do other work?
    return line;
}
2 голосов
/ 23 января 2010

В общем, соглашение по именованию глагола-существительного для функций является распространенным. «Получить» - это только один из глаголов, которые вы можете увидеть. Это также может быть «Активировать», «Закрыть», «Дамп» или что-нибудь ... это всего лишь следствие английского и общего кодирования, что метод или функция обычно «Делают что-то» для «Некоторого типа объекта (ов)». .

2 голосов
/ 23 января 2010

Ваше имя функции должно быть кратким и иметь смысл. Ни больше ни меньше.

Если get работает для вас, используйте Get. Если Retrieve работает, используйте это.

Не существует настоящего "стандарта" для соглашений об именах.

1 голос
/ 23 января 2010

В дополнение к другим ответам - если у вас есть метод, такой как GetNextLine (), вы можете вместо этого рассмотреть возможность возврата перечисления, например,

IEnumerable<Line> GetLines();

1 голос
/ 23 января 2010

Нет, не существует стандарта, согласно которому функция должна начинаться с "Get".

При создании имен функций, которые имеют смысл, они часто принимают такую ​​форму, как функция GetHashCode. Другие глаголы в начале являются общими, как в функции ToString, и только глаголы, как в функции Encode.

Существуют и другие формы, в которых вы скорее описываете результат функции, например Substring.

1 голос
/ 23 января 2010

Я не видел стандарта C # для этого, но большая часть написанного фактического кода использует свойства "getter", и они опускают слово "Get" в имени функции. Пример:

Public SongOrderList SongOrder
{
    get
    {
      return mySongOrderList;
    }
}

Использование «Get» (и «Set») в качестве префикса имени функции - это то, что я обычно вижу в языках, которые не имеют свойств в качестве .NET (такие языки, как C, Java).

* * 1008 Edit: * * 1010

... и, конечно, вы также можете иметь сеттеры

Public SongOrderList SongOrder
{
    get
    {
      //do some processing code here
      return mySongOrderList;
    }
    set
    {
      //do some processing code here
      mySongOrderList = value; //value is a C# keyword, in case you didn't know. it is the parameter to the setter
    }
}

Конечно, если вы хотите получить и установить, и вам не нужна дополнительная обработка, просто выполните get / set youc, как Java-bean, и сделайте следующее:

Public SongOrderList SongOrder
    {
        get; set;
    }

Если вам нужен только ПУБЛИЧНЫЙ добытчик, вы можете сделать это (я думаю - это было давно):

Public SongOrderList SongOrder
    {
        public get; private set;
    }
...