代码规范(CS)
总则
1.1. 目的
为了对程序员的开发进行适当的规范化,特制定本规范。其根本目的,是为了保证程序具有良好的、一致的结构,以期提高程序的可读性及可维护性,方便程序的测试、维护、升级等工作,同时,也培养程序员书写代码的规范性。
1.2. 原则
名称反映含义,形式反映结构。
1.3. 申明
本规范适用于采用MS .NET作开发工具的公司所有项目,程序员应严格按照本规范编写代码,如项目有确实需要的特殊要求,也必须经项目经理审核后,把该特殊要求形成文档当作本文档的随附文件一起保存。
代码规范
2.1. 项目规范
2.1.1. 每一个项目的代码、文档按模块、功能必须在该项目VSS上有条理的归类存放,每个项目VSS上均必须包含以下子目录:
² Code:源代码目录
² Sql:数据库脚本目录
² Demodata:演示数据目录
² Userdata:用户数据目录
² Help:帮助文档目录
² Install:安装文件目录
² Document:文档目录
² Picture:图片目录
² templates:模板目录
子目录下也必须依照详细的用途分类建立子目录。
2.1.2. 每个项目的主目录下均必须有一个项目说明文件,说明该项目的一些概要性提示和相关规范。
2.1.3. 在项目目录下的每层子目录中必须有一个目录说明文件,说明该层目录及其子目录的分类方法和含义。任何时候,新增一个目录时,均必须在同层目录下的目录说明文件中添加所新增目录的分类含义,同时创建该目录下的目录说明文件。
2.1.4. 工程文件代码规范:
² 任何一个工程文件(包括动态链接库工程文件)的第一部分必须用注释的形式说明项目名称、公司版权、工程描述、版本说明、创建日期、作者以及后续更新人员。
² 除主模块、公共函数模块和公共数据模块外,所有该项目下的单元不可由项目自动创建(CREATE),在加入新单元后,必须在工程文件中删除自动CREATE的语句。
² 工程文件的其余代码遵行本文档约定的单元规范及其它代码规范。
2.2. 源代码文件总体规范
2.2.1. 每个源代码文件的第一部分必须用注释的形式说明项目名称、公司版权。
2.2.2. 在Using和NameSpace之间,以注释的形式说明项目名称、模块名称、模块描述、模块版本、创建日期、作者、更新人以及TODO列表。
2.2.3. 每个类之前或者方法、属性、事件之前要有相应的注释。
2.2.4. 对于有参数的类,要对参数的含义进行说明。
2.2.5. 总体风格
² 缩进规则:每级间保持一个“Tab”键的距离。
² 边距页宽:每一行的程序不要过长。最好不要超过80个字符。如果超过,要进行换行。
² 注释规则:如果只注释一行,使用“//”作为注释符。多行注释,使用“/*……*/”作为注释符。
² 空行使用:需使用空行的地方有:版权块、类之间、方法过程函数之间、方法内部算法分段。空行只能用一行,多余的空行必须删除。
示例:
/********************************************************
项目名称
版权所有 (C) 2000,2001 公司名称
********************************************************/
using System;
using System.Data;
/********************************************************
项目名称:
模块名称:
描述:
版本:
日期:
作者:
更新:
TODO:
********************************************************/
namespace InfoComm.DVAP
{
/// <summary>
/// 作者:
/// 日期:
/// 描述:
/// </summary>
public class Utilities
{
/// <summary>
/// 作者:
/// 日期:
/// 描述:
/// </summary>
/// <returns></returns>
public static string ConnectionString()
{
return "ConnectionString";
}
}
}
2.3. 源代码内部规范
2.3.1. 常量定义
² 所有常量的第一个前缀必须为C,常量必须分主题归类定义,如有多个主题,每一个主题必须加一个主题前缀。前缀与前缀之间、前缀与名称之间用_分割。
² 每个常量的定义单独一行,在同一行上,必须用“//”加注释说明该常量的含义。
² 按主题归类的常量,在每个主题开始的第一行必须用“//”注释主题含义。
示例:
Const
{ 主题1 }
C_主题前缀1_--- = ----; // 含义
C_主题前缀1_--- = ----; // 含义
C_主题前缀1_--- = ----; // 含义
C_主题前缀1_--- = ----; // 含义
{ 主题2 }
C_主题前缀2_--- = ----; // 含义
C_主题前缀2_--- = ----; // 含义
C_主题前缀2_--- = ----; // 含义
C_主题前缀2_--- = ----; // 含义
2.3.2. 类型定义
2.3.3. 变量定义
² 变量定义时,变量名必须有明确的含义,不能用数字作为名字。
² 变量分为全局变量和局部变量。全局变量需要加“m_”前缀。