C# 什么是;o";作为变量前缀的平均值?

C# 什么是;o";作为变量前缀的平均值?,c#,naming,C#,Naming,在oCn?规则是什么 using(SqlConnection oCn = new SqlConnection( "Server=(local);Database=Pubs;User ID=TestUser1;Password=foo1;")) { oCn.Open(); ... } 我发现这篇文章中的这种命名方式是一种完全过时的说法,即“Cn”是一个*o*对象。我担心它是对象的剩余部分 p> > c和.net,我认为这没用。 强>编辑<

在oCn?规则是什么

using(SqlConnection oCn = new SqlConnection(
        "Server=(local);Database=Pubs;User ID=TestUser1;Password=foo1;")) {
        oCn.Open();
        ...
    }

我发现这篇文章中的这种命名方式是一种完全过时的说法,即“Cn”是一个*o*对象。

我担心它是对象的剩余部分

<> p> > c和.net,我认为这没用。
<>强>编辑< /强>。顺便说一下,我认为匈牙利符号中包含了类型和/或范围信息在C.*中无用。 它可能意味着
对象
类似于某些复杂类型,它不符合命名字符串
strMyString
和int
iMyInt
等相同(荒谬)约定。

o表示对象


这是一个不太有用的约定,根据变量的类型在名称中包含,因此字符串是strWhatever。有时我甚至看到obj,即@Humberto建议的objCn,似乎是开发人员使用的。

当我10年前开始作为程序员工作时,我工作的公司使用了类似的命名约定。我不记得约定名称是什么,但我记得所有对象实例都有“o”前缀,代表对象。

在本例中,“o”表示对象。这是试图使用匈牙利符号的“系统”变体

有两种类型的匈牙利语:。系统使用前缀来标识存储的数据类型。例如,iCounter中的“i”表示变量是整数

Apps hungarian采用了完全不同的方法,并指定前缀应表示数据的用途。例如,rwPosition中的“rw”表示行

windows api使用匈牙利语系统。这导致大量其他程序员也在使用它。不幸的是,当对api进行更改时,即使实际的数据类型发生了更改,它们也保留了旧的变量名。这导致了大量的混淆,即应该将参数传递给给定API函数的数据类型。尤其是在各种把手周围

在.Net编码指南中。事实是,他们谈论的是匈牙利的“系统”;我百分之百同意。另一方面,“应用程序”匈牙利语在描述数据时有很多用途,而不是类型

在一天结束时,只需删除“o”。它不会给程序添加任何内容

哦,要阅读有趣的文章,请查看Joel对此的看法:

这个“规则”直接来自:

o_苹果obj_苹果

为类的每个实例使用一个“o”或“obj”前缀,以表明您正在考虑一个大的、多态的图片


也许是某个人的习惯。它的意思是原作者想表达的意思。您可以随意命名变量。可能是“打开”连接?它可能意味着“对象”。回到VB时代,对象和类是一件大事,所以人们在对象前面加上“o”,在类前面加上“cls”。@Matt:Nah。形式上的每一个问题,“X在C#中是什么意思?”都有一个答案:“Jon Skeet想要它做什么就做什么。”我唯一喜欢的“符号”是接口的
I
。我很高兴它仍然停留在C#中。我一直喜欢在末尾添加-able的“java”。它没有比ISerializable更好的了。我不喜欢-able,因为它有着“我序列化”的完美语法。在“我是可序列化的”中省略了“am”。想象一下,如果苹果称它为iPhone。@Dan-可序列化和可序列化之间有很大的区别。这是一种解释。我的想法更像是继承了“IMelt”的冰淇淋,意思是物体本身可以融化,而不是继承了“IMelt”的喷灯,意思是它可以融化其他东西。因为这是一个接口,而不是一个基类,所以应该清楚的是,我们不是在继承操作(融化[序列化]其他对象的能力),而是在继承交互方法(被某种东西融化[序列化]的能力)。还有一些名称与-able不太兼容。例如,“IEnable”和“IEnable”。这确实很好地概括了这一点:)我要冒险说,对于不强制执行类型的系统(如脚本语言),它不是过时的。在变量名中编码所需的类型有助于理解程序中要发生的事情。@PeterM:有助于理解。。直到您决定将类型更改为其他类型,此时它完全没有意义。