c#代码编程风格很实用

 

1. 代码风格规范 

规范

说明

缩进

4个空格

用Tab的话在不同地方显示长度会变

行宽

固定

限制为在VS2010中不隐藏Solution Explorer时不超出边界

括号

不要依赖优先级而省略括号

在复杂的条件表达式中清楚表示逻辑优先级

断行与空白的{}行

必须,不能省略

单步Debug需要;

使结构和对应关系清晰

下划线

只有两种情况下使用:

  • 类的私有成员以下划线开头
  • 事件响应函数以下划线分隔对象和动作

 

大小写

类型/类/函数名用Pascal形式

变量用Camel形式

类/类型/变量用组合名词,

函数则用动词或动宾组合词

注释

  • 复杂的注释应该放在函数头;
  • 注释只用来解释程序做什么,为什么这样做,以及要特别注意的地方;
  • 不要注释程序是怎么工作的,这应该在代码中清晰体现
  • 有明显相似作用的代码要用 #region #endregion 括起来并简单注释

注释应随程序的修改而不断更新

命名规则:

规范

示例

类的私有成员

以下划线开头,后第一个单词首字母小写其余首字母大写。

_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菜单项加入命名空间。
原文地址:https://www.cnblogs.com/jhabb/p/1925634.html