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.   

    Microsoft公司强烈推荐使用Pascal大小写形式的大写规则,它是指在标识符中的所有单词的第一个字母都大写,而且在单词中没有空格字符的命名规则。另外一种规则是camel大小写规则,它是指标识符的第一个字母是小写的,而其后的每个单词的一个字母都是大写的规则。下表总结了Microsoft公司大写规则的建议。类型 种类 示例
    类 Pascal MyClass
    枚举值、枚举类型 Pascal Color.Red
    事件 Pascal ButtonDown
    异常类 Pascal 类名称以Exception结尾MyException
    接口 Pascal 接口名称以字母I为前缀ICloneable
    方法 Pascal GetData
    命名空间 Pascal Wish
    属性 Pascal ItemValue
    参数 camel itemValue
    私有成员变量 camel itemValue除了以上归纳的大写规则外,下列应用于命名类、接口和命名空间的指导原则
    不要使用与命名空间重复的类名称。
    不要使用下划线字符
    不要使用与关键字冲突的标识符名称
    使用名词和名词短语命名类和命名空间,使用动词来命名方法。
      

  2.   

    http://msdn2.microsoft.com/en-us/library/ms229002.aspx
    http://msdn2.microsoft.com/en-us/library/xzf533w0(VS.71).aspx
      

  3.   

    amandag(高歌)请问这些资料哪里有?
    可否给个链接?
      

  4.   

    http://nbpinke.com/redirect.php?tid=68&goto=lastpost
      

  5.   

    命名方法:
    1,骆驼命名法:第一个字母小写,随后的每个单词的第一个字母大写。如:studentName
    2,帕斯卡命名法:每一个单词的第一个字母都大写。如:StudentName
    3,匈牙利命名法:加前缀。如btnName,txtName.一。常量
    带有访问修饰符的常量以骆驼命名法
    带有公有访问修饰符,受保护修饰符的常量以帕斯命名法。二。数组
    以骆驼命名法。三。结构
    以帕斯卡命名法,用名词或短语作为名称。四。枚举
    以帕斯卡命名法,枚举中的选项也一样。五,类
    以帕斯卡命名方法,确保类的名称是一个名词。六。成员变量命名。
    给公有成员变量,受保护的成员变量或内部成员变量命名应以帕斯卡命名方法,给私有成员变量应使用骆驼命名法并以下划线开头。七。变量
    内联变量(在方法内声明)应以骆驼命名法命名。避免使用单个字符作为变量名称,但循环除外。
      

  6.   

    to lovefootball
    成员变量      mCardName
    你写代码时用这种方法》?看着很不好呀,还不如m_呢。
      

  7.   

    按照微软的说法
    私有成员 以camelCasing格式
    而局部变量也是这种格式那在类的方法中如何区分这两种变量呢?
    哪位能圆满回答这个问题呀?马上给他50,谢谢这个问题才是我发贴想问的!
      

  8.   

    私有变量和方法的参数老是有冲突比如  性别  sexclass Person
    {
          string sex;
          public SetSex(string sex)  // 这里就有冲突了
          {
               this.sex = sex;
          }
    }
    如何解决
      

  9.   

    1. 类名           SomeClass
    2.方法名          SomeMethod
    3.属性名          SomeName
    4.常量名          ConstValue
    5.局部变量        myName
    6.方法参数        someNumber
    7.类的成员变量(私有)  m_Name   
    这个也不错
      

  10.   

    1    大小写约定 因为CLR支持许多编程语言,这些语言有的区分大小写,有的不区分大小写,所以不应该只用大小写来区分名字。但是,大小写对增加名字可读性怎么强调也不过分。1、1    标识符的大小写规则

    为了区分一个标识符中的多个单词,把标识符中的每个单词首字母大写。不要用下划线来区分单词,或者在标识符中的任何地方使用下划线。有两种合适的方法来大写标识符中的字母,这取决于所使用的标识符:
    PascalCasing
    camelCasing

    PascalCasing约定被用于除了参数名之外的所有标识符,它把标识符中的每个单词的首字母大写,如下面的例子:
    PropertyDescriptor
    HtmlTag两个字母长的首字母缩写词是一个特例,在这种情况下两个字母都要大写,如下面的例子:
    IOStreamcamelCasing约定仅用于参数的名字,它把标识符中除第一个单词之外的所有单词首字母大写,如下面的例子:
    propertyDescriptor
    htmlTag如果标识符以两个单词的首字母缩写开始,camelCasing风格要求这个两个字母都要小写,如下面的例子:
    ioStream标识符 大小写 例子
    名称空间 Pascal namespace System.Security{…}
    类型 Pascal public calss StreamReader{…}
    接口 Pascal public interface IEnumerable{…}
    方法 Pascal public class Object{
    public virtual string ToString();
    }
    属性 Pascal public class String{
    public int Length{get;}
    }
    事件 Pascal public class Process{
    public event EventHandler Exited;
    }
    字段(静态) Pascal public MessageQueue{
        public static readonly TimeSpan InfiniteTimeout;
    }
    枚举 Pascal FileMod{
        Append,
        …
    }
    参数 camel public 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)
      

  11.   

    1、3    复合词和常用术语的大小写 在涉及大小写是,大多数的复合词术语要作为单词处理。

    下表列出常用的复合词和常用术语的大小写。
    Pascal camel 不要这样处理
    BitFlag bitFlag Bitflag
    Callback callback CallBack
    DoNot doNot Dont
    Email email EMail
    Id id ID
    Ok ok OK
    Pi pi PI
    LogOn logOn LogIn
    LogOff logOff LogOut
    FileName fileName FileName
    UserName userName Username
    SignIn signIn SignOn
    SignOut signOut SignOff
    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的新版本命名…
      

  12.   

    3、程序集和DLL的命名 程序集是一个部署单元,同时还代表托管代码的身份。虽然程序集可以分布在一个或多个文件中,但一般来说一个程序集仅与一个DLL相对应。 名字空间和DLL和程序集是不同概念。名字空间对开发人员来说是一组逻辑实体,而DLL和程序集则是在打包和部署的一个单元。DLL可以因产品的组织及其他原因包含多个名字空间。由于名字空间的组织方式与DLL不同,因此应该单独设计。例如,如果决定把DLL命名为MyCompany.MyTechnology,这并不意味着DLL必须包含MyCompany.MyTechnology的名字空间。 要为程序集和DLL选择提示性的名字,比如System.Data。程序集和DLL的名字不一定相对应,但在给程序集命名是遵循名字空间的名字也是合情合理。 用下面的方式给DLL命名:
    <Company>.<Component>.dll
    Microsoft.VisualBasic.dll4、名字空间的命名 命名规则如下:
    <Company>.(<Product>|<Technology>)[.<Feature>][.<Subnamespace>]
    Microsoft.VisualStudio
    Microsoft.VisualStudio.Design
    Fabrikam.Math 尽量使用公司名字来作为名字空间的前缀,这样可以避免和别的公司使用相同的名字。 用稳定的、与版本无关的产品名字作为名字空间的第二层。 用PascalCasing的大写风格 在适当的时候在名字空间中使用复数形式,如System.Collections,但是商品名称和首字母缩写词例外,如System.IO。
    5、类、结构和接口的命名 一般来说,类型名应该是名词词组,因为它们代表系统中的实体。一条好的经验法则是,如果无法为类型找到一个名词词组,那么应该考虑重新该类型的总体设计。 用易于识别的名字来命名类型,如在一个主要场景中用于把打印作业提交到打印机的类型,命名为Printer要比PrintQueue好。 常用的类型名反应出使用场景,而不是继承层次。大多数用户只使用继承层次的叶节点,他们计划不关心类层次的结构。然而,API设计者常常把继承层次作为选择类型名的重要标准。如Stream、StreamReader。 下面是类型命名的一些规则:
    使用名词或者名词词组来命名,在少数情况下也可以使用形容词词组来命名。
    考虑派生类以基类的名字结尾。
    接口要以I字母开头。
    要确保一对类/接口的名字只差一个“I”前缀。5、1    泛性类型参数的命名 …5.2    常用类型的命名
    类型 派生类规范
    System.Attribute
    System.Delegate 给事件委托添加“EventHandler”后缀,给事件处理之外的那些委托添加“Callback”
    不要添加“Delegate”后缀
    System.EventArgs 添加“EventArgs”后缀
    System.Enum 不要添加“Enum”后缀
    System.Exception 添加“Exception”后缀
    Sysetm.Collection.IDictionary
    System.Collection.Generic.IDictionary<TKey,TValue> 添加“Dictionary”后缀
    System.Collection.IEnumerable
    System.Collection.ICollection
    System.Collection.IList
    System.Collection.Generic.IEnumerable<T>
    System.Collection.Generic.ICollection<T>
    System.Collection.Generic.IList<T> 添加“Collection”后缀
    System.IO.Stream 添加“Stream”后缀
    System.Security.CodeAccessPermission
    System.Security.IPermission 添加“Permission”后缀
      

  13.   

    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、资源的命名…
      

  14.   

    http://msdn2.microsoft.com/zh-cn/library/ms229002(VS.80).aspx找了个中文的,楼主要好好学英文呀!
      

  15.   

    camel方法好像是用的最多的把
      

  16.   

    一切尽在,MSDN类库开发的设计准则
    http://msdn2.microsoft.com/zh-cn/library/ms229042(VS.80).aspx其中名称准则
    http://msdn2.microsoft.com/zh-cn/library/ms229002(VS.80).aspx
      

  17.   

    其他编码规范参考:http://www.cnblogs.com/Files/Jinglecat/C#编码规范_东软.rarhttp://www.cnblogs.com/Files/Jinglecat/IDesign%20C# Coding Standard 2.0.rar
      

  18.   

    LZ的说法是错的
    camel 写法....
    很多人建议用匈牙利...
      

  19.   

    LZ的说法是错的
    camel 写法....
    很多人建议用匈牙利...匈牙利
    =========
    晕,匈牙利命名规则有什么缺点,有什么优点,知道不?
      

  20.   

    大哥,msdn的例子就是MS的命名规则
      

  21.   

    老大们,我看了你们给我的MSDN链接了但里面根本就没有谈到
    7.类的私有成员变量 (不是公共或保护的)的命名方法呀!!!
      

  22.   

    我是楼主
    老大们,我看了你们给我的MSDN链接了但里面根本就没有谈到
    7.类的私有成员变量 (不是公共或保护的)的命名方法呀!!!
      

  23.   

    我也看了个。net类库的部分源码
    里面的私有成员变量的命名什么样的都有
    乱七八糟的
    如:m_IntValue   _Name      myNumber
    都有出现,汗一个!!!
      

  24.   

    那本书《.NET设计规范》有空去看看吧。C#设计者亲手做序的。我还正在看。
      

  25.   

    类的私有成员变量用:_userName;
    它的属性便是:UserName;
    如果有参数便用:userName;
      

  26.   

    <类库开发的设计准则> 中没有 私有成员 的命名规范作出明确的说明,
    主要由于 私有成员 是”私有“只有类的设计者自己使用,对外是隐藏的,
    因此,这条规则,更倾向于类设计者的习惯命名,我在实践中,
    一般,为了其他命名规范一致,如方法的参数变量命名,
    也采取 Camel 方式,
    同时,C# 中每个私有字段一般都有对应的同名属性,考虑代码移植性(例如不区分大小写的VB.net),加上下划线前导private string _firstName;
    public string FirstName { get; set; }一些带 VC 风格的程序员,喜欢以 m_ 作为前导但是,依然不推荐 匈牙利 命名法,
    除了,有可能改变变量的类型意外,
    事实上,
    一个命名良好的变量名,应该选择具有意义的单词,应该是自说明性的,
    对 C# 这样的强类型语言,对于变量的类型,一个命名良好的变量名也是可以达到自说明性的,比如,前面的 firstName, 我想没有人会认为一个人的名字会用 int 或者 double 来表示吧?