C#字段资本化公约

时间:2017-10-16 19:14:57

标签: c#

我的教科书(Visual C#How to Program,6 / e)规定C#中的字段应该使用camelCase。这与Microsoft C#指南中给出的示例相对应: https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/classes-and-structs/fields

var query = (from prof in context.BillingProfiles
             join emp in context.Emps on prof.ID equals emp.ID
             join grp in context.BillingGroups on prof.GroupID equals grp.GroupID
             where (prof.EndDate == null) && (grp.System == "sysGrp") && (prof.ID == id)
             select prof).Distinct()
            .Select(x => new OpId()
            {
                id = x.ID,                                        
                GroupId = x.GroupID,
                OpId = x.OpID,
                StartDate = x.StartDate,
                EndDate = x.EndDate,
                AddedOn = x.AddedOn,
                AddedBy = x.AddedBy,
                RemovedOn = x.RemovedOn,
                RemovedBy = x.RemovedBy,
                Prodid = x.ProdID,
            });

然而,官方的Microsoft命名约定明确指出字段应该使用PascalCase(尽管它们没有提供私有字段的例子,因为它们应该是正常的): https://docs.microsoft.com/en-us/dotnet/standard/design-guidelines/capitalization-conventions

标识符:Field, 套管:Pascal, 例如:

public class CalendarEntry
{
    // private field
    private DateTime date;
    // ...
}

Sooo,我怎么知道根据MS编码惯例使用什么案例来保持我的编码风格?

1 个答案:

答案 0 :(得分:5)

AFAIK c#没有一成不变的约定...是的,技术 “官方”惯例,但即使在MS自己的源代码中,也没有100%的时间遵循惯例,并且许多程序员和/或公司肯定没有遵循宗教信仰。

考虑到这一点,我的首选约定,以及迄今为止我见过的最好的约定,是ReSharper默认设置的约定。我强烈建议遵循这个惯例:

  • PascalCase 适用于:类,结构,方法,属性,public | internal | protected字段(无论static | readonly | const)和private const字段。
  • _underscorePrefixCamelCase private _fields(const时除外)。
  • camelCase 本地变量。