Соглашения об именах C # для рекурсивных внутренних функций? - PullRequest
8 голосов
/ 19 октября 2011

C # имеет несколько соглашений об именах для часто используемых типов методов:

  • BeginFoo() / EndFoo() для асинхронных методов
  • TryGet() / TryParse(), которые возвращают false вместо исключения
  • FooOrDefault() для методов, которые возвращают default(T) вместо исключения
  • IsFoo для логических флагов

Мне было интересно, есть ли один для рекурсивных внутренних методов ? например в этот пример из другого вопроса переполнения стека :

public int CalculateSomethingRecursively(int someNumber)
{
    return doSomethingRecursively(someNumber, 0);
}

// What to call this? 
private int doSomethingRecursively(int someNumber, int level)
{
    if (level >= MAX_LEVEL || !shouldKeepCalculating(someNumber))
        return someNumber;
    return doSomethingRecursively(someNumber, level + 1);
}

В Си я видел, как люди используют foo(...) + foo_r(...) как соглашение. Но как насчет .NET?

Ответы [ 2 ]

8 голосов
/ 19 октября 2011

Лично я, вероятно, назвал бы это CalculateSomethingRecursivelyImpl - я склонен использовать Impl в качестве суффикса для "закрытого метода", который фактически выполняет большую часть работы метода, который имеет то же имя, но без суффикса. " Тот факт, что это рекурсивно, не изменит это для меня - но это только личный выбор.

Если честно, такой метод, по-видимому, всегда будет закрытым - поэтому он не так важен, как для открытых / защищенных методов. Просто договориться с другими членами вашей команды.

2 голосов
/ 19 октября 2011

Честно говоря, я бы сказал, что те же соглашения о присвоении имен C #, которые применяются к нерекурсивной функции, применимы и к рекурсивной.Попробуйте назвать это что-то описательное, но относительно короткое.И если вы действительно не можете придумать что-то отличное от нерекурсивного, тогда вам придется экспериментировать с суффиксами.Я предпочитаю «Помощник», хотя стараюсь избегать использования суффиксов.

...