递归内部函数的C#命名约定?

时间:2011-10-18 21:37:04

标签: c# .net recursion naming-conventions

对于常见的方法类型,C#有一些命名约定:

  • BeginFoo() / EndFoo()用于异步方法
  • 返回TryGet()而非抛出异常的
  • TryParse() / false
  • FooOrDefault()表示返回default(T)而不是抛出异常的方法
  • IsFoo表示布尔标志

我在想,递归内部方法是否有一个?例如在this example from another Stack Overflow question中:

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);
}

在C中,我看到人们使用foo(...) + foo_r(...)作为惯例。但是在.NET中怎么样?

2 个答案:

答案 0 :(得分:7)

就我个人而言,我可能会称之为CalculateSomethingRecursivelyImpl - 我倾向于使用Impl作为“私有方法”的后缀,该方法实际上完成了具有相同名称的方法的大部分工作没有后缀。“它的递归这一事实不会改变我 - 但它只是个人选择。

说实话,这样的方法可能总是私有的 - 所以它几乎和公共/受保护的方法一样重要。与其他团队成员一起制定一个会议。

答案 1 :(得分:2)

老实说,我会说适用于非递归函数的相同C#命名约定也适用于递归函数。尝试将其命名为描述性但相对较短的内容。如果你真的想不出与非递归不同的东西,那么你将不得不尝试后缀。我更喜欢“Helper”,尽管我尝试避免使用后缀。