C#7中本地函数的惯用命名约定是什么

Jos*_*gle 20 c# naming-conventions c#-7.0

是否应该在camelCase中命名本地函数?

public static int Factorial(int n)
{
    return calcFactorial(n);

    int calcFactorial(int number) => (number < 2)
        ? 1
        : number * calcFactorial(number - 1);
}
Run Code Online (Sandbox Code Playgroud)

还是PascalCase

public static int Factorial(int n)
{
    return CalcFactorial(n);

    int CalcFactorial(int number) => (number < 2)
        ? 1
        : number * CalcFactorial(number - 1);
}
Run Code Online (Sandbox Code Playgroud)

Ale*_*lex 7

这个问题没有“正确”的答案。

但在我们的团队中,我们使用_PascalCase()本地功能。

我们已经使用了_xxx私有变量,并且在函数名称之前有一个下划线可以明显看出它是本地的(就像它是“私有的”)。PascalCase 有助于区分函数和变量。使用非 Visual Studio 但基本的文本编辑器时也非常方便。

public static int Factorial(int n)
{
    return _CalcFactorial(n);

    int _CalcFactorial(int number) => (number < 2)
        ? 1
        : number * _CalcFactorial(number - 1);
}
Run Code Online (Sandbox Code Playgroud)

PS SO 的语法荧光笔不喜欢这样:)


小智 5

我的标准始终是PascalCase,也要拼出完整的单词。我不喜欢缩写,因为它们可能有多种含义。

因此,在您的PascalCase方案中,我将“ Calc”一词拼写为以下内容:

public static int Factorial(int n)
{
    return CalculateFactorial(n);

    int CalculateFactorial(int number) => (number < 2)
        ? 1
        : number * CalculateFactorial(number - 1);
}
Run Code Online (Sandbox Code Playgroud)

编译器已经出现了一些问题,并且需要一些额外的字节来使方法清楚些,这很值得进行一些额外的击键。

  • 尽管可能会推荐它,但我个人发现这样命名不能帮助将其与***public***方法区分开来。特别是当您在某些纯文本编辑器(如记事本)中查看源代码时。命名是帮助区分成员的一种方法。让成员名称看起来像 public 会带来与公共成员相同的感觉,这些成员通常很重要(公共 API 的一种),甚至不应该重命名。对我来说,所有公共成员都很重要,所有私人成员都可以自由重构。我将其命名为“calcFactorial”,这仍然足够清晰。 (2认同)

Tee*_*jay 5

没有正确的答案,但 Microsoft 指南建议使用 PascalCase:

命名类型的公共成员(例如字段、属性、事件、方法和本地函数)时,请使用 pascal 大小写。

https://learn.microsoft.com/en-us/dotnet/csharp/fundamentals/coding-style/coding-conventions


编辑:似乎他们最近删除了该声明。无论如何,他们仍然在所有文档中使用 PascalCase (例如https://learn.microsoft.com/en-us/dotnet/csharp/programming-guide/classes-and-structs/local-functions),尽管没有明确说明。