求微软(.net开发组)的C#命名规范,也可以说下自己用的C#命名规范
Pascal 大小写形式: 所有单词第一个字母大写,其他字母小写。
camel 大小写形式: 除了第一个单词,所有单词第一个字母大写,其他字母小写。
匈牙利命名方法: 在每个变量前加上表示其类型的前缀。
寻求答案的主要问题:
1. 类名 SomeClass
2.方法名 SomeMethod
3.属性名 SomeName
4.常量名 ConstValue
5.局部变量 myName
6.方法参数 someNumber
7.类的成员变量(私有) m_Name (主要是这个)
我后面写的例子是本人现在用的
学自《C# Coding standard》 一书
但我想了解下,MS内部人员的C#命名规范
还请高手指点下:
微软(.net开发组)的C#命名规范,也可以说下自己用的C#命名规范
[解决办法]
1. 类名 SomeClass
2.方法名 SomeMethod
3.属性名 SomeName
4.常量名 ConstValue
5.局部变量 myName
6.方法参数 someNumber
7.类的成员变量(私有) m_Name (主要是这个)
===================================
也用这个
马夹帮顶
[解决办法]
Microsoft公司强烈推荐使用Pascal大小写形式的大写规则,它是指在标识符中的所有单词的第一个字母都大写,而且在单词中没有空格字符的命名规则。另外一种规则是camel大小写规则,它是指标识符的第一个字母是小写的,而其后的每个单词的一个字母都是大写的规则。下表总结了Microsoft公司大写规则的建议。
类型种类示例
类PascalMyClass
枚举值、枚举类型PascalColor.Red
事件PascalButtonDown
异常类Pascal类名称以Exception结尾MyException
接口Pascal接口名称以字母I为前缀ICloneable
方法PascalGetData
命名空间PascalWish
属性PascalItemValue
参数camelitemValue
私有成员变量camelitemValue
除了以上归纳的大写规则外,下列应用于命名类、接口和命名空间的指导原则
不要使用与命名空间重复的类名称。
不要使用下划线字符
不要使用与关键字冲突的标识符名称
使用名词和名词短语命名类和命名空间,使用动词来命名方法。
[解决办法]
http://msdn2.microsoft.com/en-us/library/ms229002.aspx
http://msdn2.microsoft.com/en-us/library/xzf533w0(VS.71).aspx
[解决办法]
amandag(高歌)
请问这些资料哪里有?
可否给个链接?
[解决办法]
http://nbpinke.com/redirect.php?tid=68&goto=lastpost
[解决办法]
命名方法:
1,骆驼命名法:第一个字母小写,随后的每个单词的第一个字母大写。如:studentName
2,帕斯卡命名法:每一个单词的第一个字母都大写。如:StudentName
3,匈牙利命名法:加前缀。如btnName,txtName.
一。常量
带有访问修饰符的常量以骆驼命名法
带有公有访问修饰符,受保护修饰符的常量以帕斯命名法。
二。数组
以骆驼命名法。
三。结构
以帕斯卡命名法,用名词或短语作为名称。
四。枚举
以帕斯卡命名法,枚举中的选项也一样。
五,类
以帕斯卡命名方法,确保类的名称是一个名词。
六。成员变量命名。
给公有成员变量,受保护的成员变量或内部成员变量命名应以帕斯卡命名方法,给私有成员变量应使用骆驼命名法并以下划线开头。
七。变量
内联变量(在方法内声明)应以骆驼命名法命名。避免使用单个字符作为变量名称,但循环除外。
[解决办法]
骆驼命名法
[解决办法]
私有变量和方法的参数老是有冲突
比如 性别 sex
class Person
{
string sex;
public SetSex(string sex) // 这里就有冲突了
{
this.sex = sex;
}
}
如何解决
[解决办法]
1. 类名 SomeClass
2.方法名 SomeMethod
3.属性名 SomeName
4.常量名 ConstValue
5.局部变量 myName
6.方法参数 someNumber
7.类的成员变量(私有) m_Name
这个也不错
[解决办法]
1 大小写约定
因为CLR支持许多编程语言,这些语言有的区分大小写,有的不区分大小写,所以不应该只用大小写来区分名字。但是,大小写对增加名字可读性怎么强调也不过分。
1、1 标识符的大小写规则
为了区分一个标识符中的多个单词,把标识符中的每个单词首字母大写。不要用下划线来区分单词,或者在标识符中的任何地方使用下划线。有两种合适的方法来大写标识符中的字母,这取决于所使用的标识符:
PascalCasing
camelCasing
PascalCasing约定被用于除了参数名之外的所有标识符,它把标识符中的每个单词的首字母大写,如下面的例子:
PropertyDescriptor
HtmlTag
两个字母长的首字母缩写词是一个特例,在这种情况下两个字母都要大写,如下面的例子:
IOStream
camelCasing约定仅用于参数的名字,它把标识符中除第一个单词之外的所有单词首字母大写,如下面的例子:
propertyDescriptor
htmlTag
如果标识符以两个单词的首字母缩写开始,camelCasing风格要求这个两个字母都要小写,如下面的例子:
ioStream
标识符大小写例子
名称空间Pascalnamespace System.Security{…}
类型Pascalpublic calss StreamReader{…}
接口Pascalpublic interface IEnumerable{…}
方法Pascalpublic class Object{
public virtual string ToString();
}
属性Pascalpublic class String{
public int Length{get;}
}
事件Pascalpublic class Process{
public event EventHandler Exited;
}
字段(静态)Pascalpublic MessageQueue{
public static readonly TimeSpan InfiniteTimeout;
}
枚举PascalFileMod{
Append,
…
}
参数camelpublic calss Convert{
public static int ToInt32(string value);
}
1、2 首字母缩写词的大小写
一般来说,避免在标识符的名字中使用首字母缩写词很重要,除非它们是普通使用的。例如,HTML、XML和IO很容易理解,但不怎么常用的首字母缩写词绝对应该避免。
从定义上讲,首字母缩写词必须至少两个字母。由三个或以上的字母组成的首字母缩写词遵循与任何其他单词一样的规范。只有第一个字母大写,除非是camelCasing风格的参数名中的第一个单词,在这种情况下第一个单词全部小写。如下面的例子:
System.Xml
public void ProcessHtmlTag(string htmlTag)
正如前面一节已经提到的,对两个字母组成的首字母缩写词(如IO)的处理不同的,其主要目的是为了避免混淆。这样的首字母缩写词的两个字母应该大写,除非是camelCasing风格的参数名中的第一个单词,在这种情况下两个字母都小写。如下面例子:
System.IO
public void StartIO(Stream ioStream, bool closeIOStream)
[解决办法]
1、3 复合词和常用术语的大小写
在涉及大小写是,大多数的复合词术语要作为单词处理。
下表列出常用的复合词和常用术语的大小写。
Pascalcamel不要这样处理
BitFlagbitFlagBitflag
CallbackcallbackCallBack
DoNotdoNotDont
EmailemailEMail
IdidID
OkokOK
PipiPI
LogOnlogOnLogIn
LogOfflogOffLogOut
FileNamefileNameFileName
UserNameuserNameUsername
SignInsignInSignOn
SignOutsignOutSignOff
2、通用命名约定
本节描述了一些通用的命名约定,它们涉及到单词的选择、单词缩写和首字母缩写词的使用规范及如何避免使用编程语言特有的名字。
2、1 单词的选择
对标识符的名字来说,很重要的一点就是一目了然。标识符的名字应该清楚的说明每个成员做什么,以及每个类型和参数表示什么。为此,名字的意思比其长短更重要。
要使用易于阅读的名字:
属性HorizontalAlignment要比AlignmentHorizontal易于阅读。
要更看中可读性,而不是其简短性:
属性CanScrollHorizontally要比ScrollableX好。
不要使用下划线、连字符以及其他任何非字母也非数字的字符。
不要使用匈牙利命名法。
2、2 使用单词缩写和首字母缩写词
一般来说,不要在标识符中使用缩写或首字母缩写词。不要使用未被广泛接受的单词缩写和首字母缩写词,也就是说让非此领域的人也能明白它们表示什么意思。如下面的例子:
不要使用GetWin,而应该使用GetWindow。
即使广泛接受的首字母缩写词,也尽量少用,只在必要的时候才使用。如下面例子:
UI用来表示User Interface,HTML用来表示Hypertext Markup Language,这些是被广泛接受的缩写词,但是我们在实际中也尽量少用。
2.3 避免使用语言特有的名字
对那些所谓的基本类型,CLR平台上的编程语言都要自己的名字(别名)来称呼它们。如int是C#中的System.Int32的别名。为了确保框架能够充分利用跨语言协作,避免在标识符中使用语言所特有的类型名是很重要的。
要给类型名使用有意思的名字,不要使用语言特有的关键字。如下面例子:
GetLength要比GetInt好。
要使用常见的名字,比如value或item,不要重复类型的名字(如果除了类型之外,标识符美元其他的语义,而且参数的类型也不重要)。如下面的例子:
void Write(double value);
void Write(float value);
void Write(short value);
2、4 为已有API的新版本命名
…
------解决方案--------------------
5、3 枚举类型的命名
遵循PascalCasing风格。
用单数名词来命名枚举类型,除非它表示的是位域(bit field) 。
public enum ConsoleColor {
Black,
Blue,
…
}
使用复数名词来命名表示位域的枚举类型
[Flags]
public enum ConsoleModifiers {
Alt,
Control,
Shift
}
不要加“Enum”后缀,不要加“Flag”或“Flags”后缀。
6、类型成员命名
类型由方法、属性、事件、构造函数已经字段等成员组成。
6、1 方法的命名
方法是用来执行的,所以方法名要求是动词或动词词组。它还用来把方法同属性和类型名区分开,属性和类型名是名词或形容词词组。遵循PascalCasing风格。如下面的例子:
public class String {
public string Trim();
}
6、2 属性的命名
属性命名遵循PascalCasing风格,属性用名词词组或形容词词组来命名。如下面例子:
public class String{
public int Length {get;}
}
属性名要用肯定的短语来表示布尔属性,可以加“Is”、“Can”或“Has”等前缀。
考虑用属性的类型来命名属性。如下面例子:
public enum Color {…}
public class Contorl{
public Color Color {get{…} set{…}}
}
6、3 事件的命名
事件表示一些动作,要么是正在发生的,要么是已经发生的。因此事件和方法一样,用动词来命名,除此之外,还要用动词的时态来表示事件发生的时间。
要用动词来命名事件。
Clicked、Painting、DroppedDown
要用动词的过去时或现在时来表示事件之前和之后的概念。
不要用“Before”和“After”前缀和后缀来区分之间之后的概念。
要在命名事件处理函数(用作事件类型的委托)时加上EventHandler后缀,并以sender和e来作为两个参数的命名。如下面例子:
public delegate void ClieckedEventHandler(object sender, ClieckedEventArgs e);
6、4 字段命名
字段命名规则适用静态公用字段和静态受包含字段。
遵循PascalCasing规则。
要用名词或名词短语来命名字段。
不要用“g_”或“s_“来区分静态和非静态字段。
7、参数命名
遵循camelCasing风格。
要适用具有描述性的参数名。
考虑参数的意思,而不是参数的类型来为参数命名。
8、资源的命名
…
[解决办法]
http://msdn2.microsoft.com/zh-cn/library/ms229002(VS.80).aspx
找了个中文的,楼主要好好学英文呀!
[解决办法]
camel方法好像是用的最多的把
[解决办法]
一切尽在,MSDN
类库开发的设计准则
http://msdn2.microsoft.com/zh-cn/library/ms229042(VS.80).aspx
其中
名称准则
http://msdn2.microsoft.com/zh-cn/library/ms229002(VS.80).aspx
[解决办法]
其他编码规范参考:
http://www.cnblogs.com/Files/Jinglecat/C#编码规范_东软.rar
http://www.cnblogs.com/Files/Jinglecat/IDesign%20C# Coding Standard 2.0.rar
[解决办法]
LZ的说法是错的
camel 写法....
很多人建议用匈牙利...
[解决办法]
建议用匈牙利...
[解决办法]
LZ的说法是错的
camel 写法....
很多人建议用匈牙利...
匈牙利
=========
晕,
匈牙利命名规则有什么缺点,有什么优点,知道不?
[解决办法]
大哥,msdn的例子就是MS的命名规则
[解决办法]
帮助文档里面什么都有吧!
[解决办法]
学习;
[解决办法]
这个那有什么严格的规定, 就是要 看上去顺点, 不是那么的别扭就行了
[解决办法]
那本书《.NET设计规范》有空去看看吧。C#设计者亲手做序的。我还正在看。
------解决方案--------------------
类的私有成员变量用:_userName;
它的属性便是:UserName;
如果有参数便用:userName;
[解决办法]
UP
[解决办法]
<类库开发的设计准则> 中没有 私有成员 的命名规范作出明确的说明,
主要由于 私有成员 是”私有“只有类的设计者自己使用,对外是隐藏的,
因此,这条规则,更倾向于类设计者的习惯命名,
我在实践中,
一般,为了其他命名规范一致,如方法的参数变量命名,
也采取 Camel 方式,
同时,C# 中每个私有字段一般都有对应的同名属性,考虑代码移植性(例如不区分大小写的VB.net),加上下划线前导
private string _firstName;
public string FirstName { get; set; }
一些带 VC 风格的程序员,喜欢以 m_ 作为前导
但是,依然不推荐 匈牙利 命名法,
除了,有可能改变变量的类型意外,
事实上,
一个命名良好的变量名,应该选择具有意义的单词,应该是自说明性的,
对 C# 这样的强类型语言,对于变量的类型,一个命名良好的变量名也是可以达到自说明性的,
比如,前面的 firstName, 我想没有人会认为一个人的名字会用 int 或者 double 来表示吧?
[解决办法]
mark