“o”表示什么是变量前缀?

时间:2011-02-23 20:08:15

标签: c# naming

在oCn?规则是什么?

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

我在本文http://msdn.microsoft.com/en-us/magazine/cc163799.aspx

中找到了这种命名方式

8 个答案:

答案 0 :(得分:50)

完全过时的说法“Cn”是* o *对象。

答案 1 :(得分:16)

我担心它是对象的某些hungarian dialect notation的剩余部分。

在C#和.NET中,我认为这没用。

编辑顺便提一下,我认为包含类型和/矿范围信息的匈牙利符号在C#中无用。 I do like Apps Hungarian notation

答案 2 :(得分:13)

在这种情况下,“o”表示对象。这是尝试使用匈牙利符号的“系统”变体。

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

匈牙利应用程序采用了完全不同的方法,并指定前缀应指明数据的用途。例如,rwPosition中的“rw”表示行。

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

在.Net编码指南中,MS explicitly states that hungarian shouldn't be used。现实是,他们正在谈论匈牙利的“系统”;我100%同意。另一方面,“应用程序”匈牙利语在描述数据时有很多用途,而不是类型。

在一天结束时,只需删除“o”即可。它不会给程序增加任何东西。

哦,有趣的阅读,请查看Joel对此的看法:http://www.joelonsoftware.com/articles/Wrong.html

答案 3 :(得分:5)

这可能意味着object类似于某些复杂类型,不适合用于命名字符串strMyString和整数iMyInt等的相同(荒谬)约定。

答案 4 :(得分:1)

o是对象,

这是一个非常有用的约定,其中变量的类型在名称中被包含,因此字符串是strWhatever。有时我甚至看到了obj,即objCn

答案 5 :(得分:1)

正如@Humberto建议的那样,似乎是使用Hungarian Notation的开发人员。

答案 6 :(得分:1)

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

答案 7 :(得分:1)

此“规则”直接来自How To Write Unmaintainable Code

  

o_apple obj_apple

     

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