1. 代码风格规范
项 |
规范 |
说明 |
缩进 |
4个空格 |
用Tab的话在不同地方显示长度会变 |
行宽 |
固定 |
限制为在VS2010中不隐藏Solution Explorer时不超出边界 |
括号 |
不要依赖优先级而省略括号 |
在复杂的条件表达式中清楚表示逻辑优先级 |
断行与空白的{}行 |
必须,不能省略 |
单步Debug需要; 使结构和对应关系清晰 |
下划线 |
只有两种情况下使用:
|
|
大小写 |
类型/类/函数名用Pascal形式 变量用Camel形式 |
类/类型/变量用组合名词, 函数则用动词或动宾组合词 |
注释 |
|
注释应随程序的修改而不断更新 |
命名规则:
项 |
规范 |
示例 |
类的私有成员 |
以下划线开头,后第一个单词首字母小写其余首字母大写。 |
_startPosition |
类的公有成员 |
以属性(Property)体现,私有成员若需外部访问必须通过属性封装。 |
public float StartPosition { get; private set; } |
类的属性名 |
所有单词的第一个首字母都要大写。 |
StartPosition |
其它除类的私有成员外的变量 |
均为第一个单词首字母小写其余首字母大写。 |
myPrivateVariable |
类、枚举、结构体的名字 |
所有单词的第一个首字母都要大写。 |
MiniSphere |
命名空间的名字 |
所有单词的第一个首字母都要大写; 不能有下划线,若有说明需划分子命名空间 |
|
注释的一些模板:
文件注释 |
位于文件开头: /***************************************************************************\ * CodingCrazy Team @ MSRA-USTC Class * * Module Name:An unabbreviated name for the module (not the filename) * Abstract: * Description of what this module does * Notes: * [Optional] algorithm description, special case conditions, * references, etc. * * History: * Created on 2010-11-24 by xxx * # Add … * Modified on 2010-11-25 by xxx * # Add … * # Remove ... * # ... * Modified on 2010-11-26 by xxx * # ... \***************************************************************************/
|
函数头部注释 |
使用XML文档型注释,即/// |
函数内部注释 |
一律使用 // |
2. 代码设计规范
函数功能:只做一件事,但是要做好。
参数处理:所有传递过来的参数都需要用Assert断言保证其正确性。
如:Assert( p != NULL ); Assert( s.length > 3 );
错误处理:只用作Debug用途的输出信息代码等均需要嵌套在以下预处理语句中。
#if _DAIDAI_DEBUG_
// 这里是debug相关代码
#endif
Tips:
- 使用Ctrl+K+C注释成片代码,Ctrl+K+U取消注释。
-
善用代码片段和代码环绕:
可以尝试输入#region后再按两下Tab键。
输入fore后按两下Tab键再按Tab修改。
按#if后再按两下Tab键。
选中一片代码后右键菜单中选择Surround with...再选择 try或#region。
- 使用F12和Ctrl+'-'在代码中导航。
- 使用右键Refractor菜单项:比如用Encapsulate field来封装类内私有成员。
- 使用右键Reslove菜单项加入命名空间。