标签:有助于 web 内容 tab 返回值 work regular 创建对象 design
Pascal 大小写
将标识符的首字母和后面连接的每个单词的首字母都大写。可以对三字符或更多字符的标识符使用Pascal 大小写。例:
BackColor
Camel 大小写
标识符的首字母小写,而每个后面连接的单词的首字母都大写。例:
backColor
匈牙利命名法
匈牙利命名法是一名匈牙利程序员发明的,而且他在微软工作了多年。此命名法就是通过微软的各种产品和文档传出来的。多数有经验的程序员,不管他们用的是哪门儿语言,都或多或少在使用它。
这种命名法的基本原则是:
变量名=属性+类型+对象描述
即一个变量名是由三部分信息组成,这样,程序员很容易理解变量的类型、用途,而且便于记忆。
下边是一些推荐使用的规则例子,你可以挑选使用,也可以根据个人喜好作些修改再用之。
属性部分:
全局变量: g_
常量 : c_
类成员变量: m_
类型部分:
指针: p
句柄: h
布尔型: b
浮点型: f
无符号: u
描述部分:
初始化: Init
临时变量: Tmp
目的对象: Dst
源对象: Src
窗口: Wnd
下边举例说明:
代码列宽控制在120字符左右。
当表达式超出或即将超出规定的列宽,遵循以下规则进行换行
当以上规则会导致代码混乱的时候自己采取更灵活的换行规则。
缩进应该是每行一个Tab(4个空格),不要在代码中使用Tab字符。
Visual Studio 设置:工具->选项->文本编辑器->C#->制表符->插入空格,制表符大小=4,缩进大小=4
空行是为了将逻辑上相关联的代码分块,以便提高代码的可阅读性。
在以下情况下使用两个空行
在以下情况下使用一个空行
在以下情况中要使用到空格
while (true)
注意在方法名和左括符 “(” 之间不要使用空格,这样有助于辨认代码中的方法调用与关键字。
a += c + d; a = (a + b)/(c*d); while (d++ == s++) { n++; } PrintSize("size is " + size + "\n");
for (expr1; expr2; expr3)
if (condition) { } public int Add(int x, int y) { }
if (somevalue == 1) { somevalue = 2; }
while(1) { if(valid) { } // if valid else { } // not valid } // end forever
namespace SCB.Framework.Web
{
} // namespace SCB.Framework.Web
该类注释采用.Net已定义好的Xml标签来标记,在声明接口、类、方法、属性、字段都应该使用该类注释,以便代码完成后直接生成代码文档,让别人更好的了解代码的实现和接口。如
/// <summary> MyMethod is a method in the MyClass class. /// <para> Here‘s how you could make a second paragraph in a description. /// <see cref="System.Console.WriteLine"/> /// for information about output statements. /// </para> /// <seealso cref="MyClass.Main"/> /// </summary> public static void MyMethod(int Int1) { }
注释标签的使用请参考:http://msdn.microsoft.com/zh-cn/library/5ast78ax.aspx
该类注释用于
用法
/*
动态路由算法使用Round-robin算法,原理是...
*/
该类注释用于
// // 注释语句 // private int number; 或 // 注释语句 private int number;
if (1 == 1) // always true { statement; } // always true
一行只建议作一个声明,并按字母顺序排列。如:
int level; // 推荐 int size; // 推荐 int x, y; // 不推荐
建议在变量声明时就对其做初始化。
变量建议置于块的开始处,不要总是在第一次使用它们的地方做声明。如:
void MyMethod() { int int1 = 0; if (condition) { int int2 = 0; ... } }
例外情况
for (int i = 0; i < maxLoops; i++) { ... }
应避免不同层次间的变量重名,如:
int count; ... void MyMethod() { if (condition) { int count = 0; // 避免 ... } ... }
不要使用是 public 或 protected 的实例字段。如果避免将字段直接公开给开发人员,可以更轻松地对类进行版本控制,原因是在维护二进制兼容性时字段不能被更改为属性。考虑为字段提供 get 和set 属性访问器,而不是使它们成为公共的。 get 和 set 属性访问器中可执行代码的存在使得可以进行后续改进,如在使用属性或者得到属性更改通知时根据需要创建对象。下面的代码示例阐释带有 get 和 set 属性访问器的私有实例字段的正确使用。例:
public class Control: Component { private int handle; public int Handle { get { return handle; } } }
名称应该说明“什么”而不是“如何”。通过避免使用公开基础实现(它们会发生改变)的名称,可以保留简化复杂性的抽象层。例如,可以使用
GetNextStudent()
,而不是GetNextArrayElement
()。
命名原则是:
选择正确名称时的困难可能表明需要进一步分析或定义项的目的。使名称足够长以便有一定的意义,并且足够短以避免冗长。唯一名称在编程上仅用于将各项区分开。表现力强的名称是为了帮助人们阅读;因此,提供人们可以理解的名称是有意义的。不过,请确保选择的名称符合适用语言的规则和标准。
以下几点是推荐的命名方法:
AnalyzeThis()
,或者属性名 xxK8
。这样的名称会导致多义性。Book.BookTitle
。而是应该使用 Book.Title
。(Avg、Sum、Min、Max、Index)
。min/max、begin/end
和 open/close
。Is
,这意味着 Yes/No
或 True/False
值,如 fileIsFound
。Flag
的术语。状态变量不同于布尔变量的地方是它可以具有两个以上的可能值。不是使用 documentFlag
,而是使用更具描述性的名称,如 documentFormatType
。for (int i = 1; i < 7; i++)
。而是使用命名常数,如 for (int i = 1; i < NUM_DAYS_IN_WEEK; i++)
以便于维护和理解。大写
System.IO
System.Web.UI
SCB.Framework.UI
下表汇总了大写规则,并提供了不同类型的标识符的示例。
标识符 | 大小写 | 示例 |
---|---|---|
类 | Pascal | AppDomain |
枚举类型 | Pascal | ErrorLevel |
枚举值 | Pascal | FatalError |
事件 | Pascal | ValueChange |
异常类 | Pascal | WebException 注意: 总是以 Exception 后缀结尾。 |
只读的静态字段 | Pascal | RedValue |
接口 | Pascal | IDisposable 注意: 总是以 I 前缀开始。 |
方法 | Pascal | ToString |
命名空间 | Pascal | System.Drawing |
属性 | Pascal | BackColor |
公共实例字段 | Pascal | RedValue 注意: 应优先使用属性。 |
受保护的实例字段 | Camel | redValue 注意: 应优先使用属性。 |
私有的实例字段 | Camel | redValue |
参数 | Camel | typeName |
方法内的变量 | Camel | backColor |
为了避免混淆和保证跨语言交互操作,请遵循有关区缩写的使用的下列规则:
GetWindow
,而不要使用 GetWin
。UI
作为 User Interface
缩 写,用 OLAP
作为 On-line Analytical Processing
的缩写。HtmlButton
或 HTMLButton
;但是,应当大写仅有两个字符的缩写,如:System.IO
,而不是 System.Io
。CompanyName.TechnologyName[.Feature][.Design]
例如:
public class FileStream public class Button public class String
TechnologyName
指的是该项目的英文缩写或软件名。Debug
后,就不要再使用Debug
作为一个名称空间名。URL
、HTML
FileStream
,而不是 CFileStream
。IdentityStore
是适当的。在适当的地方,使用复合单词命名派生的类。派生类名称的第二个部分应当是基类的名称。例如,ApplicationException
对于从名为 Exception
的类派生的类是适当的名称,原因ApplicationException
是一种Exception
。请在应用该规则时进行合理的判断。例如,Button
对于从 Control
派生的类是适当的名称。尽管按钮是一种控件,但是将 Control
作为类名称的一部分将使名称不必要地加长。public class FileStream public class Button public class String
IComponent
使用描述性名词ICustomAttributeProvider
使用名词短语IPersistable
使用形容词。public interface IServiceProvider public interface IFormatable
以下代码示例阐释如何定义 IComponent 接口及其标准实现 Component 类。
public interface IComponent { // Implementation code goes here. } public class Component: IComponent { // Implementation code goes here. }
应该总是将后缀 Attribute 添加到自定义属性类。例:
public class ObsoleteAttribute { }
枚举 (Enum) 值类型从 Enum 类继承。
FlagsAttribute
添加到位域 Enum 类型。Type GetType(string typeName) string Format(string format, object args)
RemoveAll()
GetCharArray()
Invoke()
Color
的属性,则属 性的类型同样应该是 Color。public class SampleClass { public Color BackColor { // Code for Get and Set accessors goes here. } }
以下代码示例阐释提供其名称与类型相同的属性。
public enum Color { // Insert code for Enum here. } public class Control { public Color Color { get { // Insert code here. } set { // Insert code here. } } }
EventHandler
后缀。sender
和 e
的参数。sender
参数表示引发事件的对象。sender
参数始 终是 object
类型的,即使在可以使用更为特定的类型时也如此。与事件相关联的状态封装 在名为 e
的事件类的实例中。对 e
参数类型使用适当而特定的事件类。EventArgs
后缀命名事件参数类。Close
事件应当具有 Closing
事件和 Closed
事件。不要使用 BeforeXxx/AfterXxx
命名模式。Close
,而不要使用 OnClose
。OnXxx
)。此方法只应具有事件参数 e
,因为发送方总是类型的实例。public delegate void MouseEventHandler(object sender, MouseEventArgs e); 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; } } }
所有单词大写,多个单词之间用 "_" 隔开。 如:
public const string PAGE_TITLE = "Welcome";
class SampleClass { string url; string destinationUrl; }
g_
或 s_
前缀是不正确的。public struct Color { public static readonly Color Red = new Color(0x0000FF); public Color(int rgb) { // Insert code here. } public Color(byte r, byte g, byte b) { // Insert code here. } public byte RedValue { get { return Color; } } }
集合是一组组合在一起的类似的类型化对象,如哈希表、查询、堆栈、字典和列表,集合的命名建议用复数。
避免使用与常用的 .NET 框架命名空间重复的类名称。例如,不要将以下任何名称用作类名称:System、Collections、Forms 或 UI。有关 .NET 框架命名空间的列表,请参阅类库。
另外,避免使用与C#语言关键字冲突的标识符。
每行最多包含一个语句。如:
a++; // 推荐 b--; // 推荐 a++; b--; // 不推荐
复合语句是指包含"父语句{子语句;子语句;}"的语句,使用复合语句应遵循以下几点
while(d += s++) { n++; }
return语句中不使用括号,除非它能使返回值更加清晰。如:
return; return myDisk.size(); return (size ? size : defaultSize);
if、 if-else、if else-if 语句使用格式
if (condition) { statements; } if (condition) { statements; } else { statements; } if (condition) { statements; } else if (condition) { statements; } else { statements; } for、f
oreach 语句
for 语句使用格式
for (initialization; condition; update) { statements; }
空的 for 语句(所有的操作都在initialization
、condition
或 update
中实现)使用格式
for (initialization; condition; update); // update user id
foreach 语句使用格式
foreach (object obj in array) { statements; }
注意
while 语句使用格式
while (condition) { statements; }
空的 while 语句使用格式
while (condition);
do - while 语句使用格式
do { statements; } while (condition);
switch - case语句使用格式
switch (condition) { case 1: statements; break; case 2: statements; break; default: statements; break; }
注意:
try - catch语句使用格式
try { statements; } catch (ExceptionClass e) { statements; } finally { statements; }
using 块语句使用格式
using (object) { statements; }
控件名简写+英文描述,英文描述首字母大写
标签:有助于 web 内容 tab 返回值 work regular 创建对象 design
原文地址:http://www.cnblogs.com/hgmyz/p/6859677.html