tempad
ReadyGo!技术成就梦想 >>数据库技术 >> .NET命名规范中文版————里头就是内容!!!!!!赶快来啊,请跟贴,这样更多人才能看到它!!!!

.NET命名规范中文版————里头就是内容!!!!!!赶快来啊,请跟贴,这样更多人才能看到它!!!!

ReadyGo!技术成就梦想 网络搜索 efish 2008-1-13 11:12:01

.NET命名规范中文版————里头就是内容!!!!!!赶快来啊,请跟贴,这样更多人才能看到它!!!!

楼主cnming(cnming)2002-01-04 17:40:27 在 .NET技术 / C# 提问

词语选择  
   
   
   
  避免使用由经常使用的名称空间复制的类型名。类型名不能使用下列词语。  
   
  System               Collections       Forms               UI  
   
   
   
  避免使用与常用关键词冲突的标识符。例如,避免使用下列词语。    
   
  AddHandler    
   
  AddressOf    
   
  Alias    
   
  And    
   
  Ansi    
   
   
  As    
   
  Assembly    
   
  Auto    
   
  BitAnd    
   
  BitNot    
   
   
  BitOr    
   
  BitXor    
   
  Boolean    
   
  ByRef    
   
  Byte    
   
   
  ByVal    
   
  Call    
   
  Case    
   
  Catch    
   
  CBool    
   
   
  CByte    
   
  CChar    
   
  CDate    
   
  CDec    
   
  CDbl    
   
   
  Char    
   
  CInt    
   
  Class    
   
  CLng    
   
  CObj    
   
   
  Const    
   
  CShort    
   
  CSng    
   
  CStr    
   
  CType    
   
   
  Date    
   
  Decimal    
   
  Declare    
   
  Default    
   
  Delegate    
   
   
  Dim    
   
  Do    
   
  Double    
   
  Each    
   
  Else    
   
   
  ElseIf    
   
  End    
   
  Enum    
   
  Erase    
   
  Error    
   
   
  Event    
   
  Exit    
   
  ExternalSource    
   
  False    
   
  Finally    
   
   
  For    
   
  Friend    
   
  Function    
   
  Get    
   
  GetType    
   
   
  Goto      
   
  Handles    
   
  If    
   
  Implements    
   
  Imports    
   
   
  In    
   
  Inherits    
   
  Integer    
   
  Interface    
   
  Is    
   
   
  Let    
   
  Lib    
   
  Like    
   
  Long    
   
  Loop    
   
   
  Me    
   
  Mod    
   
  Module    
   
  MustInherit    
   
  MustOverride    
   
   
  MyBase    
   
  MyClass    
   
  Namespace    
   
  New    
   
  Next    
   
   
  Not    
   
  Nothing    
   
  NotInheritable    
   
  NotOverridable    
   
  Object    
   
   
  On    
   
  Option    
   
  Optional    
   
  Or    
   
  Overloads    
   
   
  Overridable    
   
  Overrides    
   
  ParamArray    
   
  Preserve    
   
  Private    
   
   
  Property    
   
  Protected    
   
  Public    
   
  RaiseEvent    
   
  ReadOnly    
   
   
  ReDim    
   
  Region    
   
  REM    
   
  RemoveHandler    
   
  Resume    
   
   
  Return    
   
  Select    
   
  Set    
   
  Shadows    
   
  Shared    
   
   
  Short    
   
  Single    
   
  Static    
   
  Step    
   
  Stop    
   
   
  String    
   
  Structure    
   
  Sub    
   
  SyncLock    
   
  Then    
   
   
  Throw    
   
  To    
   
  True    
   
  Try    
   
  TypeOf    
   
   
  Unicode    
   
  Until    
   
  Variant    
   
  When    
   
  While    
   
   
  With    
   
  WithEvents    
   
  WriteOnly    
   
  Xor    
   
  eval    
   
   
  extends    
   
  instanceof    
   
  package    
   
  var    
   
     
   
   
   
   
  标识符(包括参数名)中不要使用缩写。  
   
  如果必须使用缩写:  
   
  任何超过两个字符以上的缩写都使用camel大写格式,即使这不是标准缩写。  
   
   
   
  名称空间  
   
  命名名称空间的一般规则如下:  
   
  CompanyName.TechnologyName  
   
   
   
  这样,我们看到的名称空间应该是这样的:  
   
  Microsoft.Office  
   
  PowerSoft.PowerBuilder  
   
   
   
  注意:这只是一个原则。第三方公司可以选择其它的名字。  
   
   
   
  避免用公司名称或其它著名品牌的名称作为名称空间的前缀,这样会造成两个公布的名称空间有同一个名称的可能性。(例如,将微软提供的Office自动类命名为Microsoft.Office。)  
   
   
   
  使用Pascal大写方式,用逗号分隔逻辑成分(例如,Microsoft.Office.PowerPoint)。如果你的品牌使用的是非传统大写方式,那么一定要遵循你的品牌所确定使用的大写方式,即使这种方式背离了通常的名称空间大写规则(例如,NeXT.WebObjects,和ee.cummings。)  
   
   
   
  该用复数的时候要使用复数的名称空间名。例如,使用System.Collections而不是System.Collection。本规则的特例是品牌名称和缩写。例如:使用System.IO而不是System.IOs。  
   
   
   
  名称空间和类不能使用同样的名字。例如,有一个类被命名为Debug后,就不要再使用Debug作为一个名称空间名。  
   
   
   
  类和类成分  
   
   
   
  类的命名原则  
   
  用名词或名词短语命名类。  
   
  使用Pascal大写。  
   
  减少类名中缩写的使用量。  
   
  不要使用任何类前缀(比如C)。  
   
  不要使用带下划线的字符。  
   
   
   
  下面是一些正确命名的类名的例子。  
   
  public   class   FileStream   {  
   
  }  
   
  public   class   Button   {  
   
   
   
  }  
   
  public   class   String   {  
   
  }  
   
   
   
  接口命名原则  
   
  使用名词或名词短语,或者描述行为的形容词来命名接口。例如,IComponent(描述性名词),ICustomAttributeProvider(名词短语),和IPersistable(形容词)。  
   
  使用Pascal大写。  
   
  减少接口名中缩写的使用量。  
   
  不要使用带下划线的字符。  
   
  在接口名前加前缀I,以表示这个类型是一个接口。  
   
  不要在类名前加上前缀C。偶而情况下,需要在类名前加上I而并不表示它是一个接口。在这种情况下,只要I后面的字符是小写就可(例如,IdentityStore。)  
   
  当类是接口的标准执行时,定义这一对类/接口组合就要使用相似的名称。两个名称的不同之处只是接口名前有一个I前缀。  
   
   
   
  下面我们举个例子,来看看接口IComponent和它的标准执行,类Component。  
   
  public   interface   IComponent   {  
   
  }  
   
  public   class   Component   :   IComponent   {  
   
  }  
   
  public   interface   IServiceProvider{  
   
  }  
   
  public   interface   IFormatable   {  
   
  }  
   
   
   
  属性命名原则  
   
   
   
  在属性的后面加上Attribute后缀,来自定义属性类。如下例所示。  
   
  public   class   ObsoleteAttribute{  
   
  }  
   
   
   
  Enum命名原则  
   
  Enum需使用Pascal大写。  
   
  Enum值名需使用Pascal大写。  
   
  减少enum名中缩写的使用量。  
   
  Enum名前不要加前缀(例如,adxxx表示ADO   enums,rtfxxx表示多信息文本enum,等等。)。  
   
  在enum类型上不要加Enum后缀。  
   
  Enum名称需使用单数名词。  
   
  比特域使用复数名词。  
   
  如果列举值在参数或属性中使用,需用一个enum来定义列举值。这样工具就可以知道一个属性或参数可能的值了。  
   
   
   
  public   enum   FileMode{  
   
  Create,  
   
  CreateNew,  
   
  Open,  
   
  OpenOrCreate,  
   
  Truncate  
   
  }  
   
   
   
  如果数字值to   be   bitwise   or"ed   together,就使用Flags对属性进行自定义。  
   
   
   
   
   
  public   enum   Bindings   {  
   
  CreateInstance,  
   
  DefaultBinding,  
   
  ExcatBinding,  
   
  GetField,  
   
  GetProperty,  
   
  IgnoreCase,  
   
  InvokeMethod,  
   
  NonPublic,  
   
  OABinding,  
   
  SetField  
   
  SetProperty,  
   
  Static  
   
  }  
   
   
   
  在封装一个Win32   API时,这个规则有一个特例。从一个Win32标头产生内部定义是很常见的。你可以使用Win32大写,这种形式下字母通常全部大写。  
   
   
   
  使用Int32作为一个enum的基础类型。  
   
  如果这个enum代表标志,而且标志又非常多(大于32),或者这个enum在将来可以发展成许多标志,或者类型需要与类型int有所不同以便向后兼容时,在这种情况下就产生了特例。  
   
   
   
  只有在值可以被完全表示为一组位标志时,才使用enum。开集不能使用enum(例如操作系统版,等等)。  
   
   
   
  只读和Const字段名  
   
  用名词,名词短语,或名词的缩写命名静态字段。  
   
  用Pascal大写命名静态字段。  
   
  不要用匈牙利文类型的符号作静态字段名的前缀。  
   
   
   
  参数名  
   
  使用描述性参数名。参数名应该具有足够的描述性,这样在大多数情况下参数名和它的种类可以用来确定它的意思。  
   
  用camel大写方式命名参数。  
   
  根据参数的意思来命名参数,而不是根据参数的种类来命名。我们希望开发工具可以用很方便的方式提供关于参数种类的信息,这样参数名可以得到更好的使用,可以对语义而不是对种类进行描述。但是偶尔使用根据类型命名的参数名也是完全可以的。  
   
   
   
  不要使用保留参数。如果在下一个版本中需要更多的数据,可以增加进来。  
   
  不要用匈牙利文类型的符号作为字段名的前缀。  
   
   
   
  Type   GetType   (string   typeName)  
   
  string   Format   (string   format,   object   []   args)  
   
   
   
  方法命名原则  
   
  用动词或动词短语命名方法。  
   
  用下述范例所示的Pascal大写方式命名方法。  
   
  RemoveAll()  
   
  GetCharArray()  
   
  Invoke()  
   
   
   
  属性命名原则  
   
  用名词或名词短语命名属性。  
   
  用Pascal大写命名属性。  
   
  属性与类型要一样。  
   
  用与一个类型的名称相同的名字来命名属性时,就使这个属性的类型成为那个类型。虽然听起来有些奇怪,但这是正确的。下面的例子正确使用了属性命名原则。  
   
  public   enum   Color   {...}    
   
  public   class   Control   {  
   
  public   Color   Color   {   get   {...}   set   {...}   }    
   
  }  
   
  下例就是不正确的。  
   
  public   enum   Color   {...}  
   
  public   class   Control   {  
   
  public   int   Color   {   get   {...}   set   {...}   }  
   
  }  
   
   
   
  在那个不正确的例子中,要想引用Color   enum是不可能的,因为Color,Xxx会被翻译成一个成员访问,它会首先获得Color属性的值(int种类),然后再访问那个值的成员(它应该是System.Int32的一个实例成员)。  
   
   
   
  事件命名原则  
   
  用EventHandloer后缀命名事件处理程序,如下列所示。  
   
  public   delegate   void   MouseEventHandler(object   sender,   MouseEvent   e);  
   
   
   
  使用名为sender和e的两个参数。  
   
  Sender参数代表提出事件的对象。Sender参数永远是一个类型对象,即使它可能使用了更为特定的类型。  
   
   
   
  与事件相关的状态被封装在一个名为e的事件类范例中。要使用这个类型的正确的、特定的事件类。  
   
  public   delegate   void   MouseEventHandler(object   sender,   MouseEvent   e);  
   
   
   
  用EventArgs后缀命名事件自变量类,如下例所示。  
   
  public   class   MouseEventArgs   :   EventArgs   {  
   
  int   x;  
   
  int   y;  
   
  public   MouseEventArgs(int   x,   int   y)  
   
  {   this.x   =   x;   this.y   =   y;   }  
   
  public   int   X   {   get   {   return   x;   }   }  
   
  public   int   Y   {   get   {   return   y;   }   }  
   
  }  
   
   
   
  命名事件名时,需要有之前和之后的时态概念,因此要使用现在时态和过去时态(不要使用BeforeXxx\AfterXxx的方式)。例如,可以被取消的结束事件就有Closing事件和Closed事件。  
   
   
   
  public   event   ControlEventHandler   ControlAdded   {  
   
  //..  
   
  }  
   
   
   
  用动词命名事件。  
   
   
   
  区分大小写  
   
  不要使用需要对大小写作出区分的名称。各成分不论是在区分大小写还是不区分大小写的语言下都必须是完全可用的。因为不区分大小写的语言不能在同样的环境下对只有大小写不同的两个名称作出辩别,所以成分必须避免这种情况。  
   
  不要产生两个名称相同只有大小写不同的名称空间。  
   
  namespace   ee.cummings;  
   
  namespace   Ee.Cummings;  
   
  带有两个参数的一个类型,其两个参数的名称不能只有大小写不同。  
   
  void   foo(string   a,   string   A)  
   
  System.WinForms.Point   p;  
   
  System.WinForms.POINT   pp;  
   
  带有两个属性的一个类型,其属性的名称不能只有大小写不同。  
   
  int   Foo   {get,   set};  
   
  int   FOO   {get,   set}  
   
  带有两种方法的一个类型,其方法的名称不能只有大小写不同。  
   
  void   foo();  
   
  void   Foo();  
   
   
   
  避免类型名出现混淆  
   
   
   
  不同的语言使用不同的术语以识别基本管理类型。设计人员必须避免使用对语言有专门要求的术语。遵照本章说明的规则,避免出现类型名称混淆的情况。  
   
  使用语义上有意义的名称,而不要使用类型名称。  
   
  在很少见的情况下,参数除了类型以外语义上没有任何意义,这时使用类属名。例如,一个类支持将多种数据类型写进一个流中,这个类可能有下列方法:  
   
  void   Write(double   value);  
   
  void   Write(float   value);  
   
  void   Write(long   value);  
   
  void   Write(int   value);  
   
  void   Write(short   value);  
   
  上面的例子在下述对语言有专门要求的情况下是首选。  
   
  void   Write(double   doubleValue);  
   
  void   Write(float   floatValue);  
   
   
   
  void   Write(long   longValue);  
   
  void   Write(int   intValue);  
   
  void   Write(short   shortValue);  
   
   
   
  在极端情况下,每一个基本数据类型需要有唯一的命名方式,此时使用下面的通用类型名称。    
   
  C#   type   name    
   
  Visual   Basic   type   name    
   
  JScript   type   name    
   
  Visual   C++   type   name    
   
  IL   representation    
   
  Universal   type   name    
   
   
  sbyte    
   
  SByte    
   
  SByte    
   
  char    
   
  I1    
   
  SByte    
   
   
  byte    
   
  Byte    
   
  byte    
   
  unsigned   char    
   
  U1    
   
  Byte    
   
   
  short    
   
  Short    
   
  short    
   
  short    
   
  I2    
   
  Int16    
   
   
  ushort    
   
  UInt16    
   
  UInt16    
   
  unsigned   short    
   
  U2    
   
  UInt16    
   
   
  int    
   
  Integer    
   
  int    
   
  int    
   
  I4    
   
  Int32    
   
   
  uint    
   
  NA    
   
  NA    
   
  unsigned   int    
   
  U4    
   
  UInt32    
   
   
  long    
   
  Long    
   
  long    
   
  __int64    
   
  I8    
   
  Int64    
   
   
  ulong    
   
  UInt64    
   
  UInt64    
   
  Unsigned   __int64    
   
  U8    
   
  UInt64    
   
   
  float    
   
  Single    
   
  float    
   
  float    
   
  R4    
   
  Single    
   
   
  double    
   
  Double    
   
  double    
   
  double    
   
  R8    
   
  Double    
   
   
  bool    
   
  Boolean    
   
  boolean    
   
  bool    
   
  I4    
   
  Boolean    
   
   
  char    
   
  Char    
   
  char    
   
  wchar_t    
   
  U2    
   
  Char    
   
   
  string    
   
  String    
   
  String    
   
  String    
   
  System.String    
   
  String    
   
   
  object    
   
  Object    
   
  Object    
   
  Object    
   
  System.Object    
   
  Object    
   
   
   
   
  一个支持从流中读取多种数据类型的类可以有下列方法。  
   
  double   ReadDouble();  
   
  float   ReadSingle();  
   
  long   ReadIn64();  
   
  int   ReadInt32();  
   
  short   ReadInt16();  
   
   
   
  上面的例子在下述对语言有专门要求的情况下是首选。  
   
  double   ReadDouble();  
   
  float   ReadFloat();  
   
  long   ReadLong();  
   
  int   ReadInt();  
   
  short   ReadShort();    
  问题点数:0、回复次数:18Top

1 楼qiujin(邱军)回复于 2002-01-04 22:47:06 得分 0

u     pTop

2 楼rbjojo(走鳞(好像是鱼))回复于 2002-01-04 23:17:47 得分 0

g    
  zTop

3 楼aaa(aaa)回复于 2002-01-05 00:42:37 得分 0

u____pTop

4 楼98060048(李)回复于 2002-01-05 10:59:20 得分 0

uuuuuupTop

5 楼Ninputer(装配脑袋)回复于 2002-01-05 17:24:11 得分 0

VB可以让变量名是关键字,没有这种限制的Top

6 楼jxf_12(江丰)回复于 2002-01-05 21:14:01 得分 0

同Java不一樣﹐java中類大寫﹐而變量﹐屬性及對象第一個字母小寫.Top

7 楼lpf(只有你让我快乐)回复于 2002-01-05 21:51:46 得分 0

okTop

8 楼laoyr(野人)回复于 2002-01-06 14:53:54 得分 0

O   KTop

9 楼snrs(snrs)回复于 2002-01-07 22:39:26 得分 0

很好Top

10 楼losenetway(firesword)回复于 2002-01-08 09:01:21 得分 0

upupTop

11 楼javaboy(星仔)回复于 2002-01-09 11:21:02 得分 0

还是JAVA的命名规范好,一页纸甚至只要几行就可以把命名规范写得很清楚,规则很简单。  
  M$的太复杂了,类型又多,想当年匈牙利命名法,敲起来不知多费劲,windows编程类型前缀有成千个,还是JAVA好,简单明了。Top

12 楼mashenglu(ma)回复于 2002-01-10 09:58:08 得分 0

up  
  Top

13 楼LivePower(flyboy)回复于 2002-01-10 13:14:58 得分 0

uouououTop

14 楼classfactory(贾迎乐)回复于 2002-01-11 11:21:22 得分 0

To   javaboy(星仔):  
  照你这么说还是汇编比较好了?!基本没有什么规则。  
   
  没有编程的规范,哪来编程的艺术。  
   
  Top

15 楼wangjemmy(杰)回复于 2002-02-11 01:30:12 得分 0

有中文的变量名,类型名,接口名,方法名,等等  
  这一切     对我们来说更方便了...哈哈哈哈  
  .NET   强Top

16 楼deng_kun(冷静的猪)回复于 2002-02-16 06:43:21 得分 0

up一下Top

17 楼Ninputer(装配脑袋)回复于 2002-02-18 14:05:27 得分 0

VB从4.0就支持中文变量名了,但是输入麻烦,还得切换输入法!所以没人采用Top

18 楼starice(星星)回复于 2002-02-23 21:22:25 得分 0

upTop

责任编辑: efish 参与评论 查找更多:
相关文章
关于窗口模式下的IDirectDrawSurface7.Blt()的讨厌问…

关于窗口模式下的IDirectDrawSurface7.Blt()的讨厌问题,各位大哥谢谢了!

楼主Scarlette(Lord of Borland)2002-01-04 17:40:50 在 扩充话题 / …
从数据库里查到11条记录,每页显示10个,第二页只有… 从数据库里查到11条记录,每页显示10个,第二页只有一条记录,当删除第二页这条记录后,DataSet再次绑定就出现了错误(DataSet仍然将CurrentIndexPage的值当作…
FourCC

FourCC

楼主jinbing(若晴)2002-01-04 17:42:29 在 VC/MFC / Visual C++ 资源 提问

那位高手知道fourcc是什么东东?高分奉上 问题点数:…

Delph5下的dcu文件怎么在Delphi6下使用呀 Delph5下的dcu文件怎么在Delphi6下使用呀
索虎数码工作室想找几个兼职的成员加盟,谁有兴趣呀…

索虎数码工作室想找几个兼职的成员加盟,谁有兴趣呀。

2秒记住本站域名

玩过泡泡龙吗?Readygo?Go! 再加上.Com.Cn的后缀,那就是大名小顶的ReadyGo.com.cn

分类导航
ReadyGo!技术成就梦想