Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/308.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#.NET实例变量命名约定?_C#_.net_Naming Conventions_Naming - Fatal编程技术网

C#.NET实例变量命名约定?

C#.NET实例变量命名约定?,c#,.net,naming-conventions,naming,C#,.net,Naming Conventions,Naming,我在一家公司做一个小规模的实习,在他们的代码中,我发现一些课程的名称如下: public class FlagsConfig { private static FlagsConfig _instance; } \u实例是C语言中任何一种命名约定吗 我会问开发人员,但他们今天和下周都在参加一些课程 是的,这是专用字段的通用命名标准: 我碰巧同意@JonSkeet的说法,下划线很乱,但这是MS的标准。他链接到的文件表明在你们的图书馆里没有使用下划线,但我相信这是指公众成员 更新 第一个

我在一家公司做一个小规模的实习,在他们的代码中,我发现一些课程的名称如下:

public class FlagsConfig
{
    private static FlagsConfig _instance; 
}
\u实例
是C语言中任何一种命名约定吗


我会问开发人员,但他们今天和下周都在参加一些课程

是的,这是专用字段的通用命名标准:

我碰巧同意@JonSkeet的说法,下划线很乱,但这是MS的标准。他链接到的文件表明在你们的图书馆里没有使用下划线,但我相信这是指公众成员

更新

第一个环节实际上是相反的主张;不要使用下划线。我错了,但它仍然是有用的资源

出于对Skeet先生的尊重,我进一步关注了他的链接:该链接还指出,您不应使用下划线,但该指南适用于静态、受保护和公共成员,但不一定适用于私人成员

底线:是的,这是一个通用标准,但在尝试查找/使用外部标准之前,请先使用任何内部商定的标准。

也许这可以帮助您:


根据本文档,这是可以的。

这在我的经验中是比较常见的。为了帮助识别特定类型的变量(私有变量、方法参数等),开发人员可以使用不同的命名条件

e、 g

  • 可变名称
  • 变量名称(驼峰型)
  • _变数
  • 变量名称

我认为,它往往因公司而异。

有两种常见的惯例

第一种是“用户下划线作为字段标记” 第二种是“使用s_u表示静态字段,使用m_u表示输入字段”

在我看来,这是一个宗教问题,唯一重要的是不要混淆两种风格

这本书包含了许多关于惯例和设计准则的好想法

对于私人会员,有很多不同的惯例。有些人喜欢前缀,有些人不喜欢(我个人不喜欢)。有些人喜欢区分实例变量和静态变量,有些人不喜欢:

private string m_foo;
private static string s_foo;
就我个人而言,当我阅读课文时,我发现下划线会妨碍我,我坚信这取决于你的阅读方式;当我阅读时,我会默读,多余的部分会妨碍我。对其他人来说,这显然不是问题。其他人发现局部变量和成员变量之间缺乏区别是一个问题——我通常写一些简短的方法,在这些方法中,不管怎样,都很明显是什么


更重要的是,如果您正在创建一个API等,那么当然是对公开可见的成员(包括受保护的成员和参数名)进行命名,此时您应该查看。

\u name
是一种混乱、混乱且非常陈旧的样式。不要这样做

.NET 4.0通用命名约定

如您所见,MSDN声明

请勿使用下划线、连字符或任何其他非字母数字字符。

根据[Microsoft的样式/惯例检查工具],不应使用下划线、连字符或任何其他非字母数字字符。请参阅:


此外,这个问题可能是人们遵循的许多命名约定的重复

myFirstVar = Camel Notation
驼峰符号通常用于公共变量(非私有变量)

Pascal通常用于命名类和方法

str_MyFirstVar = Hungarian Notation // if variable is of type string
匈牙利符号被认为是最古老的,但不再使用

_myFirstVariable = used for private fields in general

有很多准则和标准可供选择,但如果你工作场所使用的标准使用下划线,那么这就是你需要使用的。特别是如果你只是在那里实习,那么目标应该是保持事情的一致性(在该行业内),而不是遵循一些“更好”(但不同)的标准


问开发人员(或上级主管)一个更好的问题可能是,他们是否有关于他们使用的标准的文档/链接?

我喜欢使用案例更改来区分字段和属性:

// A private field
private Boolean someValue;
// A public property, exposing my private field
public Boolean SomeValue {
    get { return someValue; }
    set { someValue = value; }
}

您的同事是否是VB开发人员?在VB.Net中,下划线经常用于属性或类的私有成员。由于VB不区分大小写,因此无法使用大小写来区分

Private _someValue As Boolean
Protected Property SomeValue() As Boolean
    Get
        Return _someValue
    End Get
    Set(ByVal value As Boolean)
        _someValue = value
    End Set
End Property
更新:作为旁白,.NET源代码中的许多类都使用此约定。尤其是在

#u实例是C#中任何一种命名约定吗

首先,许多人引用了命名准则。请注意,其中许多准则仅适用于某一类型的公共表面区域。您提到的私人成员是内部实施细节,因此受产生它们的组织的政策约束,而不受框架设计约束人们期望在公共元素中看到的内容

对于私有实现细节,underbar前缀在许多组织中都很常见。我个人认为没有必要,但有些人似乎喜欢它

然而,重要的是,即使对于私有实现细节,您也不应该使用两个底栏。C#编译器团队保留权利,使任何以两个底栏开头的单词具有我们在该语言未来版本中选择的任何含义。这就是我们的“转义图案”如果我们真的,真的需要添加一个新的非上下文保留关键字,并且真的,真的不想破坏任何现有的代码


这在C 4规范第2.4.2节中有记载。

或在我工作过的几家公司,按组或人:)BTW,第一个我相信叫做PasCAcase,而第二个被称为CAMELCASE(短在前面,在中间像骆驼一样驼背)。是的,你确实在那里(谢谢Pascal/CAMEL案例)。+1、 虽然我同意你的观点,就像你提到的那样,这个特殊的案例有点像一场圣战。在争议中,产生的热量比光多……对我来说,这是拉齐奥的问题
Private _someValue As Boolean
Protected Property SomeValue() As Boolean
    Get
        Return _someValue
    End Get
    Set(ByVal value As Boolean)
        _someValue = value
    End Set
End Property