文档库 最新最全的文档下载
当前位置:文档库 › 程序编码规范

程序编码规范

程序编码规范
程序编码规范

蜗牛游戏程序编码规范 (版本 0.1)

规范说明:.............................................................

一、命名规则......................................................

二、程序的版式....................................................

三、注释..........................................................

四、服务端平台无关................................................

五、服务端表格操作................................................

六、客户端文件读写................................................

七、客户端内存操作................................................

八、脚本内的注释..................................................

规范说明:

制定该规范的目的是让程序清晰易懂、易维护、易管理。该规范为强制规范,必须执行,如果有没涉及的地方请参考《高质量C++-C编程指南》。当所在编程环境(如MFC、Linux)与本规范有差异时,可以使用所在编程环境的规范,但是同一个项目必须是统一的规范。

最后希望大家都能养成一个良好的程序习惯,一个好的习惯受益终身!

一、命名规则

1.所有命名应当直观且可拼读,并具有实际意义;

2.类名和函数名用大写字母开头的单词组合而成,接口类名以I开头;

3.常量全用大写的字母,用下划线分割单词,尽量不要使用宏;

4.类的数据成员加前缀m_,全局变量加前缀g_,静态变量加前缀s_;

5.变量名第一个字母小写,使用“名词”或“形容词+名词”的词义表示法;

示例:

·局部变量

char *pStringBuffer;

int &stringFindResult;

bool isEngineStartup;

·函数命名

unsigned int GetVoyageCoreState();

static bool GetVoyageServiceCount(int &count);

·结构类型

struct NodeValue

{

int width;

int height;

}

·枚举类型(枚举值必须大写且有前缀)

enum VoyageSupportType

{

VOYAGE_OS_SUPPORT_INVALID = 1,

VOYAGE_OS_SUPPORT_WINDOWS = 2

}

·联合类型

union Color

{

unsigned cha r arrColor[3];

struct ColorRGB

{

unsigned char r;

unsigned char g;

unsigned char b;

};

};

·类类型

class Object

{

int m_width; //宽度

int m_height; //高度

void SetValue(int width, int height); // 成员函数

virtual int GetArea(); // 虚函数

inline int GetWidth(); // 内联函数};

·抽象类

class ISpriteManager

{

public:

virtual int GetSpriteID() = 0;

virtual bool IsSpriteExist() = 0;

};

·自定义类型

typedef unsigned int Number;

·全局变量(我们不主张使用全局变量)

int g_howManyPeople;

·静态变量

static char *s_pStringBuffer;

·常量

const float SPRINT_RADIUS = 100.0f;

·回调函数

typedef int(*CALLBACK_SYSTEMINIT_FUNC)(IKernel * pKernel); 二、程序的版式

1.一行代码只做一件事情,只写一条语句, 语句排版整齐;

2.关键字之后要留空格,赋值操作符、比较操作符、算术操作符、逻辑操作符、位域操作符,如“=”、“+=”“>=”、“<=”、“+”、“*”、“%”、“&&”、“||”、“<<”,“^”等二元操作符的前后应当加空格,一元操作符如“!”、“~”、“++”、“--”、“&”(地址运算符)等前后不加空格,象“[]”、“.”、“->”这类操作符前后不加空格;

3.程序的分界符‘{’和‘}’应独占一行并且位于同一列,同时与引用它们的语句左对齐。{ }之内的代码块在‘{’右边4格处左对齐,这里的4格也可以是Visual Studio里的一个TAB;

4.代码行最大长度宜控制在80个字符以内;

5.代码应按功能分块,代码块之间必须有空行,而且每个代码块不要超过10行。

示例:

·语句分行和空格(表示空格)

for(int i=0,j=0;

(i

i++,j++)

{

... // program code

}

if(n>5)

{

}

else if(n<0)

{

}

else

{

}

while(a>b)

{

}

do

{

}while(a>b);

switch(n)

{

case1:

{

w=w+2;

}

break;

}

·代码块

………

// 获得字符串长度。

int length = (int)strlen(pString);

// 如果长度为空,直接将当前String类对象置空。

if (0 == length)

{

m_pString = NULL;

m_length = 0;

}

………

三、注释

1.对外暴露的模块接口全部要求使用“doxygen”注释对文件、类、函数、变量进行注释;

2.所有文件和函数必须有功能说明注释,这里不要使用“doxygen”注释(便于生成程序文档);

3.代码块的起始处必须有该代码块的功能说明注释;

4. 通信的消息和命令必须有功能和参数注释。

“doxygen”注释示例:

·接口文件首部

/**

@file varithmetic.h

@brief IString模块是voyage引擎开发以及游戏开发所使用的

算法集合模块。

@author Armterla X

@date 2007.12.1

*/

·接口函数注释

注意:这些接口注释都是写在头文件里的。

注意:接口参数要写[IN]或者是[OUT]以表明参数是输入参数还是输出参数。

函数接口注释

/**

@brief 对任意类型元素的数组进行快速排序。

@param pHead

[IN]元素数组首地址。

@param ppDstHead

[OUT]输出一组经过排序的指针。

*/

void QuickSort(void *pHead, void **ppDstHead);

·类接口注释

/**

@brief IString类是用于在Voyage引擎内部进行字符串处理的类。

IString类可以完成快速的字符串连接、分割、字串查找、字串修改等功能。

*/

class IString

{

public:

/**

@brief IString默认构造函数。

@remarks 使用默认构造函数构造IString对象不会

申请任何堆内存。

*/

IString();

/**

@brief 使用标准字符串构造IString类对象。

@param pString

[IN]指定源字符串。也就是使用哪个字符串构造当前

IString对象。

@remarks 这个构造办法会申请堆内存,构造时调用一次堆分配。

分配空间大小与参数指定的字符串长度加1相等。

*/

IString(const char* pString);

/**

@brief 析构函数,如果当前IString类对象已经申请了堆内存,

该函数会释放这个堆内存。

*/

~IString();

………

};

·通信的消息和命令

/**

\brief 聊天内容信息

\param 聊天类型,类型int

\param 聊天内容,类型wstring

*/

MSG_SERVER_SPEECH = 1001

模块内部注释示例:

·文件首部

/*

file $FILE$

brief 文件说明

author %USERNAME%

date $DATE$

*/

·函数注释

//做地形的可视检测

int TerrainSubObject::IsVisible(int x,int z)

·变量注释

int ValCol; //修改表格的第几列数据

四、服务端平台无关

1.服务端程序不要使用依赖于操作系统的API和数据类型,以及和操作系统相关的规则,以便于未来Windows和Linux平台切换。

五、服务端表格操作

1.服务端表格“Record”的名称定义也要符合命名规范;

2.在操作时不能直接用数字表示列号;

示例:

// 表格列号的定义

e num

{

CCR_CLONE_SERIAL = 0,

CCR_CYCLE_TIME,

CCR_INTO_COUNT,

CCR_COL_COUNT

};

…………………

// 表格定义和访问

pKernel->AddRecord(index, "CloneCountRec", CCR_COL_COUNT, 128);

pKernel->SetRecordColType(index , "CloneCountRec",

CCR_CLONE_SERIAL, VARTYPE_INT); // 副本号

pKernel->SetRecordColType( index , "CloneCountRec",

CCR_CYCLE_TIME, VARTYPE_INT); // 进入时间pKernel->SetRecordColType(index, "CloneCountRec",

CCR_INTO_COUNT, VARTYPE_INT); // 进入次数

六、客户端文件读写

1.客户端必须使用引擎提供的API进行文件的打开、读写、关闭等操作。

示例:

HANDLE hFile = _CORE_API->fio->_CreateFile(filename,

GENERIC_READ, 0, OPEN_EXISTING);

if (hFile == INVALID_HANDLE_VALUE)

return false;

DWORD Length = _CORE_API->fio->_GetFileSize(hFile, NULL);

if (Length > 0)

{

char *pBuffer = new char[Length + 1];

_CORE_API->fio->_ReadFile(hFile,

(void *)pBuffer, Length, NULL);

}

_CORE_API->fio->_CloseHandle(hFile);

七、客户端内存操作

1. 分配内存并调用默认构造函数:

char *p = Voy_New(char, 23); 等价于char *p = new char[23];

CUnit *p = Voy_New(CUnit, 2); 等价于 CUnit *p = new CUnit[2];

CUnit *p = Voy_New(CUnit, 1); 等价于 CUnit *p = new CUnit;

2. 释放内存并调用析构函数:

Voy_Delete(p);

如果p是某个类的指针,如:

CUnit *pUnit = Voy_New(CUnit, 2);

char *p = (char *)pUnit;

Voy_Delete(p);

这个时候不会调用CUnit的析构函数,因为传给Voy_Delete的指针是一个char*的指针,Voy_Delete认为char*指针没有析构函数。

因此,这种情况下,必须把p转换为Voy_Delete可接受的格式:(对指针的引用)

Voy_Delete((CUnit *&)p); // 这样就能正确地调用析构函数

Voy_Delete和Voy_Free会检查传入的指针是否为空,也会在删除后自动把传入的指针设为空。

3. 如果只想分配内存,而不想调用构造函数,可以调用:

char *p = Voy_Malloc(char, 1024);

4. 如果只想释放内存,而不想调用析构函数,可以调用:

Voy_Free(p);

或者:

Voy_Delete((char *&)p);

5. 如果某个类的构造函数需要参数,例如:

申请:CShow *pShow = new CS how(“this is a show”, 0);

释放:delete pShow;

应该改写为:

申请:CShow *pShow = (CShow*)(Voy_Malloc(CShow, 1));

new(pShow) CS how(“this is a show”, 0);

释放:Voy_Delete(pShow);

八、脚本内的注释

1.以上规范适合于脚本的必须执行;

C语言注释规范

C语言注释规范 1.注释原则 同一软件项目开发中,尽量保持代码注释规范和统一。 注释方便了代码的阅读和维护。 边写代码边注释,修改代码时要相应修改注释,保证注释和代码的一致性。 注释要简洁明确,不要出现形容词。 对于写的好的注释,我们将是第一个受益者。 大型软件开发中,通过别人的注释可以快速知道他人所写函数的功能,返回值,参数的使用。 2.文件头部的注释 示例: / * Program Assignment : 该文件的作用 * Author: 作者 * Date: 2013/8/6 14:34 * Description: 该文件的描述 *****/ /* * Source code in : 源代码的路径 * Function List: * initLinear 初始化线性表 * destoryLinear 释放线性表申请的空间 * isLinearEmpty 判断线性表是否为空 * isLinearFull 判断线性表是否为满 * getLinearElementValue 取得下标为index的元素的值 */ 注意:这个函数列表可以快速查询到我们想要了解的函数。 3.结构体,全局变量等的注释 示例: typedef POLYNOMIAL USER_TYPE; /* 新的数据类型的描述*/ int a; /* 全局变量的作用*/ /* 说明结构体的功能*/ typedef struct LINEAR { USER_TYPE *data; /* 每个成员的意义(作用) */ int maxRoom; /* 每个成员的意义(作用) */

int elementCount; /* 每个成员的意义(作用) */ }LINEAR; 4.函数的注释 在逻辑性较强的的地方加入注释,以便其他人的理解,在一定的程度上排除bug。 示例: /* * Function Name: getLinearElementIndex * Purpose: 取得元素的index值 * Params : * @LINEAR linear 线性表实例 * @USER_TYPE var 类型为USER_TYPE的实例 * @int (*)() cmp 提供接口,让用户定义具体比较函数 * Return: int 返回元素的index值 * Limitation: 如果返回-1,则代表不存在var的元素 */ int getLinearElementIndex(LINEAR linear, USER_TYPE var, int (*cmp)()) { /* * 如果逻辑太过复杂,这里写明该算法的过程和思路。 */ boolean found = FALSE; int i; for(i = 0; i < && !found; i++) if(cmp[i], var) == 0) found = TRUE; if(i >= i = NOT_FOUND; return i; }

项目编码规范

项目代码编程规范 1.应用范围 本规范应用于采用J2EE规范的项目中,所有项目中的JAVA代码(含JSP,SERVLET,JAVABEAN,EJB)JS代码、HTML代码及数据库设计均应遵守这个规范。同时,也可作为其它项目的参考。 2.设计类和方法 2.1. 创建具有很强内聚力的类 方法的重要性往往比类的重要性更容易理解,方法是指执行一个独立逻辑的一段代码。类常被错误的视为是一个仅仅用于存放方法的容器。有些开发人员甚至把这种思路作了进一步的发挥,将他们的所有方法放入单个类之中。 之所以不能正确的认识类的功能,原因之一是类的实现实际上并不影响程序的执行。当一个工程被编译时,如果所有方法都放在单个类中或者放在几十个类中,这没有任何关系。虽然类的数量对代码的执行并无太大的影响,但是当创建便于调试和维护的代码时,类的数量有时会带来很大的影响。 类应该用来将相关的方法组织在一起。 当类包含一组紧密关联的方法时,该类可以说具有强大的内聚力。当类包含许多互不相关的方法时,该类便具有较弱的内聚力。应该努力创建内聚力比较强的类。 大多数工程都包含许多并不十分适合与其他方法组合在一起的方法。在这种情况下,可以为这些不合群的方法创建一个综合性收容类。 创建类时,应知道“模块化”这个术语的含义是什么。类的基本目的是创建相当独立的程序单元。 2.2. 创建松散连接和高度专用的方法 2.2.1.使所有方法都执行专门的任务 每个方法都应执行一项特定的任务,它应出色的完成这项任务。应避免创建执行许多不同任务的方法。 创建专用方法有许多好处。首先调试将变得更加容易。 2.2.2.尽量使方法成为自成一体的独立方法 当一个方法依赖于其他方法的调用时,称为与其他方法紧密连接的方法。紧密连接的方法

C语言编码规范

C语言编程规范 对于程序员来说,能工作的代码并不等于“好”的代码。“好”代码的指标很多,包括易读、易维护、易移植和可靠等。其中,可靠性对嵌入式系统非常重要,尤其是在那些对安全性要求很高的系统中,如飞行器、汽车和工业控制中。这些系统的特点是:只要工作稍有偏差,就有可能造成重大损失或者人员伤亡。一个不容易出错的系统,除了要有很好的硬件设计(如电磁兼容性),还要有很健壮或者说“安全”的程序。 然而,很少有程序员知道什么样的程序是安全的程序。很多程序只是表面上可以干活,还存在着大量的隐患。当然,这其中也有C语言自身的原因。因为C语言是一门难以掌握的语言,其灵活的编程方式和语法规则对于一个新手来说很可能会成为机关重重的陷阱。同时,C语言的定义还并不完全,即使是国际通用的C语言标准,也还存在着很多未完全定义的地方。要求所有的嵌入式程序员都成为C语言专家,避开所有可能带来危险的编程方式,是不现实的。最好的方法是有一个针对安全性的C语言编程规范,告诉程序员该如何做。 本规范在制定过程中,主要参考了业界比较推崇的《华为软件编程规范和范例》和《MI SRA 2004规则》,适合C语言初学者使用,目的在于在教学中培养学生良好的编程规范和意识、素质,促进所设计程序安全、健壮、可靠、可读与可维护(程序简单、清晰)。考虑到面向的是初学者,为便于教学和课程考核操作,本规范中的要求比较基本。事实上,很多公司都有自己规定的代码风格,包括命名规则、缩进规则等,学生参加工作后,应再进一步学习和应用公司的规范。 建议学生在学习本规范的同时,花点时间阅读本规范的参考文献原文,特别是熟读本规范的参考文献之一的《“安全第一”的C语言编程规范》,深刻理解编程规范与程序安全、健壮、可靠、可读、可维护间的关系和作用,在学习和工作中养成良好的编程风格。 1 排版 1.1 严格采用阶梯层次组织程序代码 函数或过程的开始、结构的定义及循环、判断等语句中的代码都要采用缩进风格,case 语句下的情况处理语句也要遵从语句缩进要求。 程序块的分界符(如C/C++ 语言的大括号‘{’和‘}’)应各独占一行并且位于同一列,同时与引用它们的语句左对齐。在函数体的开始、类的定义、结构的定义、枚举的定义以及if 、for 、do 、while 、switch 、case 语句中的程序都要采用如上的缩进方式。 各层次缩进的风格采用TAB缩进(TAB宽度原则上使用系统默认值,TC使用8空格宽度,VC使用4空格宽度)。示例:

工程项目编码规则及管理办法

中船重工船业有限公司工程项目编码规则及管理办法 1. 范围 本办法规定公司各种工程编码分类和编码实施规则及其管理办法。 本规则适用于公司内部所有工程项目的编码计划编制、领发料、财务核算、计算机信息处理等。 2. 工程编码类别及其编制规则说明 2.1工程编码类别分为船舶产品工程、非船产品工程、基建工程、自营工程、设备大修、设备维修、设备技改、安全设施及其它工程。 2.2产品工程编码的编制方法 2.2.1 大吨位运输船舶(千吨位以上)工程号的编制方法 2.2.1.1 编码共6 位。前两位为船舶产品载重吨位或承载体积前两位数;第三位为同载重吨位船舶型号,无型号用0 表示,有型号时分为Ⅰ型、Ⅱ型、Ⅲ型等,分别用1、2、3表示,以此类推;第四、五、六位为公司大吨位运输船舶接单顺序号。 2.2.1.2 图示

例如:公司接单第31 艘70000 吨散货船工程编码为:700031 。 公司接单第18 艘33000 吨散货Ⅰ型船工程编码为:331018 。 2.2.2 商务船工程号的编制办法 2.2.2.1 编码共6位。前两位统一名称为SW(商务);第三、四两位为商务船的长度,五、六两位为商务船接单顺序号。 2.2.2.2 图示 例如:公司接单第1 艘35 米长的商务船,工程号为:SW3501 2.2.3 小吨位(百吨位)运输船工程号的编制办法 2.2. 3.1 编码共6 位。前两位统一名称为YS(运输);第三、四两位为运输船的吨位前两位,五、六两位为公司小吨位运输船接单顺序号。 2.2. 3.2 图示 例如:公司接单第1 艘载重吨为20 吨的运输船,工程号:YS2001

C语言编程规范

编码规范 1. 头文件编码规范 (2) 2. 函数编写规范 (2) 3. 标识符命名与定义 (2) 3.1通用命名规则 (2) 3.2 变量命名规则 (3) 3.3函数命名规则 (3) 3.4 宏的命名规则 (3) 4. 变量 (3) 5. 宏、常量 (4) 6. 质量保证 (4) 7. 程序效率 (5) 8. 注释 (5) 9. 排版与格式 (6) 10. 表达式 (7) 11. 代码编辑、编译 (7) 12. 安全性 (7) 13. 可读性 (7) 14. 可测性 (7) 15. 单元测试 (8) 16. 可移植性 (8)

1. 头文件编码规范 1. 禁止头文件循环依赖。 2. .c/.h文件不要包含用不到的头文件。 3. 禁止在头文件中定义变量。 4. 同一产品统一包含头文件排列方式。(如功能块排序、文件名升序、稳定度排序。) 5. 只能通过包含头文件的方式使用其他.c提供的接口,禁止在.c中通过extern的方式使用外部函数接口、变量。 2. 函数编写规范 1. 一个函数仅完成一件功能。 2. 重复代码应该尽可能提炼成函数。 3.为简单功能编写函数 4.函数的返回值要清楚、明了,让使用者不容易忽视错误情况。 5. 避免函数过长,新增函数不超过100行(非空非注释行)。 6. 避免函数的代码块嵌套过深,新增函数的代码块嵌套不超过4层。 7. 可重入函数应避免使用全局变量和禁止使用static变量。 8. 设计高扇入,合理扇出(小于7)的函数。 9. 废弃代码(没有被调用的函数和变量)要及时注释(有助于更好理解程序)。 10. 对所调用函数的错误返回码要仔细、全面地处理。 11. 函数不变参数使用const。 12. 函数应避免使用全局变量、静态局部变量和I/O操作,不可避免的地方应集中使用。 13. 函数的参数个数不超过5个。 14. 减少或禁止函数本身或函数间的递归调用 3. 标识符命名与定义 3.1通用命名规则 1. 标识符的命名要清晰、明了,有明确含义,同时使用完整的单词或大家基本可以理解的缩写,避免使人产生误解。 2. 除了常见的通用缩写以外,不使用单词缩写,不得使用汉语拼音。 示例: argument 可缩写为arg buffer 可缩写为buff clock 可缩写为clk command 可缩写为cmd compare 可缩写为cmp configuration 可缩写为cfg device 可缩写为dev error 可缩写为err hexadecimal 可缩写为hex increment 可缩写为inc initialize 可缩写为init maximum 可缩写为max message 可缩写为msg minimum 可缩写为min parameter 可缩写为para

程序代码注释编写规范

百度文库- 让每个人平等地提升自我 1 程序代码注释编写规范 为提高控制程序的阅读性与可理解性,现制定相关代码程序代码注释编写的编写规范。 一般情况下,源程序有效注释量必须在20%以上,注释的原则是有助于对程序的阅读理解,在该加的地方都加了,注释不宜太多也不能太少,注释语言必须准确、易懂、简洁。 常规注释有以下两种方式。 单行:以"文件、.inc文件、.def文件、编译说明文件.cfg等)头部应进行注释,注释必须列出:版权说明、版本号、生成日期、作者、内容、功能、与其它文件的关系、修改日志等,头文件的注释中还应有函数功能简要说明。 示例:下面这段头文件的头注释比较标准,当然,并不局限于此格式,但上述信息建议要包含在内。 /************************************************* (C), MicTiVo International. Co., Ltd. 1.File : . History: Date: Author: Modification: 2. .. *************************************************/ 一、源文件头 源文件头部应进行注释,列出:版权说明、版本号、生成日期、作者、模块目的/功能、主要函数及其功能、修改日志等。 示例:下面这段源文件的头注释比较标准,当然,并不局限于此格式,但上述信息建议要包含在内。 /************************************************************ (C), MicTiVo International. Co., Ltd. FileName: Author: Version : Date: : / /*receive _process() */ 意:与溢出中断写初值不同}

【编号规则】工程信息编码标准

QB ****公司企业标准 信息分类和编码 第3分册工程信息分类和编码 (初稿) 20XX-XX-XX 发布 20XX -XX -XX 发行 *****有限责任公司 发 布 ICS XXX 备案号XXX

目次 前言 (3) 引言 (4) 1范围 (5) 2规范性引用文件 (5) 3术语和定义 (5) 4分类原则和方法 (6) 4.1基本原则 (6) 4.2分类对象的层面划分 (6) 4.3工程信息分类 (7) 4.4工程信息整体框架 (8) 5编码方法 (9) 5.1基本原则 (9) 5.2码值 (9) 5.3代码组结构和层次 (10) 5.3.1交互定位码 (10) 5.3.2项目编码 (10) 5.3.3管理属性编码 (11) 5.3.4设计属性编码 (11) 5.3.5合同属性编码 (12) 5.3.6档案属性编码 (12) 5.3.7采购、财务、招标信息属性编码 (13) 5.3.8非项目信息编码 (13) 6分类与代码表 (14) 6.1非项目信息分类标识码(30301) (14) 6.2省电网公司及直属单位编码(30302) (14) 6.3工程项目建设管理单位代码(30303) (15) 6.4项目属性代码(30304) (18) 6.5综合指标(30305) (19) 6.6立项时间(30306) (20) 6.7批次项目标识码(30307) (21) 6.8信息属性码分类(30308) (21) 6.9项目阶段代码((30309) (22) 6.10工作分解代码(30310) (22) 6.11信息创建部门代码(30311) (23) 6.12设计资料分类代码(30314) (24) 6.13设计阶段代码(30315) (24) 6.14类目代码(30316) (25)

C语言编写规范之注释

1、头文件包含Includes 2、私有类型定义 Private typedef 3、私有定义Private define 4、私有宏定义 Private macro 5、私有变量 Private variables 6、私有函数原型Private function prototypes 7、私有函数Private functions 8、私有函数前注释 /****************************************************************************** * * Function Name : FSMC_NOR_Init * Description : Configures the FSMC and GPIOs to interface with the NOR memory. * This function must be called before any write/read operation * on the NOR. * Input : None * Output : None * Return : None ******************************************************************************* / 9、程序块采用缩进风格编写,缩进空格为4。 10、相对独立的程序块之间、变量说明之后必须加空行; 11、较长的字符(>80字符)要分成多行书写,长表达式要在低优先级操作符划分新行,操作符放在新行之首,新行要恰当缩进,保持排版整齐; 12、循环、判断等语句中若有较长的表达式或语句,则要进行适应的划分,长表达式要在低优先级操作符处划分新行,操作符放在新行之首; 13、若函数或过程中的参数较长,则要进行适当的划分。 14、不允许把多个短语句写在一行中,即一行只写一条语句。 15、if、for、do、while、case、switch、default等语句自占一行,且if、for、 do、while等语句的执行语句部分无论多少都要加括号{}。 16、对齐只使用空格键,不使用TAB键; 17、 函数或过程的开始、结构的定义及循环、判断等语句中的代码都要采用缩进风格,case 语句下的情况处理语句也要遵从语句缩进要求 18、 程序块的分界符(如C/C++语言的大括号‘{’和‘}’)应各独占一行并且位于同一 列,同时与引用它们的语句左对齐。在函数体的开始、类的定义、结构的定义、枚举的定义以 及if、for、do、while、switch、case语句中的程序都要采用如上的缩进方式。 19、 在两个以上的关键字、变量、常量进行对等操作时,它们之间的操作符之前、之后或

程序的书写规则(程序的编码规范)

程序的书写规则(程序的编码规范) 随着软件产品的功能增加和版本的提高,代码越来越复杂,源文件也越来越多,对于软件开发人员来说,除了保证程序运行的正确性和提高代码的运行效率之外,规范风格的编码会对软件的升级、修改、维护带来极大的方便性,也保证程序员不会陷入“代码泥潭”中无法自拔。开发一个成熟的软件产品,除了有详细丰富的开发文档之外,必须在编写代码的时候就有条不紊,细致严谨。 以下的编码规范包含了程序排版、注释、命名、可读性、变量、程序效率、质量保证、代码编译、代码测试和版本控制等注意事项。 一、排版: 1.关键词和操作符之间加适当的空格。 2.相对独立的程序块与块之间加空行 3.较长的语句、表达式等要分成多行书写。 4.划分出的新行要进行适应的缩进,使排版整齐,语句可读。 5.长表达式要在低优先级操作符处划分新行,操作符放在新行之首。 6.循环、判断等语句中若有较长的表达式或语句,则要进行适应的划分。 7.若函数或过程中的参数较长,则要进行适当的划分。 8.不允许把多个短语句写在一行中,即一行只写一条语句。 9.函数或过程的开始、结构的定义及循环、判断等语句中的代码都要采用缩进风 格。 10.C/C 语言是用大括号‘{’和‘}’界定一段程序块的,编写程序块时‘{’和 ‘}’应各独占一行并且位于同一列,同时与引用它们的语句左对齐。在函数体的开始、类的定义、结构的定义、枚举的定义以及if、for、do、while、switch、case语句中的程序都要采用如上的缩进方式。

二、注释 1.注释要简单明了。 2.边写代码边注释,修改代码同时修改相应的注释,以保证注释与代码的一致性。 3.在必要的地方注释,注释量要适中。注释的内容要清楚、明了,含义准确,防 止注释二义性。保持注释与其描述的代码相邻,即注释的就近原则。 4.对代码的注释应放在其上方相邻位置,不可放在下面。 5.对数据结构的注释应放在其上方相邻位置,不可放在下面;对结构中的每个域 的注释应放在此域的右方;同一结构中不同域的注释要对齐。 6.变量、常量的注释应放在其上方相邻位置或右方。 7.全局变量要有较详细的注释,包括对其功能、取值范围、哪些函数或过程存取 它以及存取时注意事项等的说明。 8.在每个源文件的头部要有必要的注释信息,包括:文件名;版本号;作者;生 成日期;模块功能描述(如功能、主要算法、内部各部分之间的关系、该文件与其它文件关系等);主要函数或过程清单及本文件历史修改记录等。 9.在每个函数或过程的前面要有必要的注释信息,包括:函数或过程名称;功能 描述;输入、输出及返回值说明;调用关系及被调用关系说明等。 三、命名 1.较短的单词可通过去掉“元音”形成缩写; 2.较长的单词可取单词的头几发符的优先级,并用括号明确表达式的操作顺序, 避免使用默认优先级。 3.使用匈牙利表示法 四、可读性 1.避免使用不易理解的数字,用有意义的标识来替代。 2.不要使用难懂的技巧性很高的语句。

项目编码规范编写指南

项目编码规范 1 命名规范 1).包名采用域后缀倒置的加上自定义的包名,采用小写字母。 在部门内部应该规划好包名的范围,防止产生冲突。部门内部产品使用部门的名称加上模块名称。产品线的产品使用产品的名称加上模块的名称。 格式: com.huawei.产品名.模块名称 com.huawei.部门名称. 项目名称 示例: Relay模块包名 com.huawei.msg.relay 通用日志模块包名 com.huawei.msg.log 2). 类名和接口使用类意义完整的英文描述,每个英文单词的首字母使用大写、其余字母使用小写的大小写混合法。 示例: OrderInformation, CustomerList, LogManager, LogConfig 3). 方法名使用类意义完整的英文描述:第一个单词的字母使用小写、剩余单词首字母大写其余字母小写的大小写混合法。 示例: private void calculateRate(); public void addNewOrder(); 4). 方法中,存取属性的方法采用setter 和 getter方法,动作方法采用动词和动宾结构。格式: get + 非布尔属性名() is + 布尔属性名() set + 属性名() 动词() 动词 + 宾语() 示例: public String getType(); public boolean isFinished(); public void setVisible(boolean); public void show();

public void addKeyListener(Listener); 5).属性名使用意义完整的英文描述:第一个单词的字母使用小写、剩余单词首字母大写其余字母小写的大小写混合法。属性名不能与方法名相同。 示例: private customerName; private orderNumber; private smpSession; 6). 常量名使用全大写的英文描述,英文单词之间用下划线分隔开,并且使用 final static 修饰。 示例: public final static int MAX_VALUE = 1000; public final static String DEFAULT_START_DATE = "2001-12-08"; 7). 属性名可以和公有方法参数相同,不能和局部变量相同,引用非静态成员变量时使用 this 引用,引用静态成员变量时使用类名引用。 示例: public class Person { private String name; private static List properties; public void setName (String name) { https://www.wendangku.net/doc/217762705.html, = name; } public void setProperties (List properties) { Person.properties = properties; } } 8).如果函数名超过15 个字母,可采用以去掉元音字母的方法或者以行业内约定俗成的缩写方式缩写函数名。 示例: getCustomerInformation() 改为 getCustomerInfo() 2 程序注释规范 1)、基本注释(必须加)

C语言程序设计课程标准

《C语言程序设计》课程标准 课程编码:03012208 课程模块:专业必修课 学时:90 课程类型:B类(理论+实践) 适用专业:计算机网络专业 1. 概述 C语言是一种结构化语言。它层次清晰,便于按模块化方式组织程序,易于调试和维护。C语言的表现能力和处理能力极强。它不仅具有丰富的运算符和数据类型,便于实现各类复杂的数据结构。它还可以直接访问内存的物理地址,进行位(bit)一级的操作。由于C语言实现了对硬件的编程操作,因此C语言集高级语言和低级语言的功能于一体。既可用于系统软件的开发,也适合于应用软件的开发。 本课程旨在使学生掌握程序设计的基本方法及思维,形成程序设计基本思想,掌握程序调试的基本方法,使学生初步具备程序设计能力,为学生进一步学习其他专业课程和今后从事网络技术工作打下坚实的基础。 课程的性质 《C语言程序设计》是一门专业必修课,是学习其它工科课程的基础。掌握程序设计的前提是掌握程序设计语言,C语言以其灵活性和实用性受到了广大计算机应用人员的喜爱。一旦掌握了C语言,就可以较为轻松地学习后续的Java程序设计、数据库技术等程序设计语言。本课程以程序设计思想为主线,介绍C语言的基本概念和程序设计的思想和方法,培养学生运用C语言解决实际问题的能力。 前导课程:计算机文化基础等。 后继课程:Java程序设计、数据库技术、信息安全技术、网络操作系统等。 课程设计理念 通过对多家IT企业的走访,我们了解到自学能力、动手能力、团队协作能力是现代企业对人才的共同要求。因而我们也把培养具有这些能力的学生作为我们的课程目标,把对这些能力的培养融入到平常的授课过程中。对以计算机网络、汽车电子等专业为代表的学生,主要注重项目分析,流程图设计以及编程技巧和方法的培养,为进一步培养软件项目综合开发和应用能力作准备。 1、基于工作过程,以职业能力培养为重点,与行业企业合作进行的课程开发与设计。 在课程的讲授过程中,采用任务驱动的模式,以案例教学为主。在学生掌握了相应知识点后,再提出新的问题,要求学生通过修改已有的代码加以解决。在修改代码的过程中,既培养了学生的自学能力,又锻炼了学生的动手能力。

C语言软件编写规范

C语言软件编写规范 以下是为大家整理的c语言软件编写规范的相关范文,本文关键词为语言,软件,编写,规范,北京,森馥,科技,股份有限公司,前言,您可以从右上方搜索框检索更多相关文章,如果您觉得有用,请继续关注我们并推荐给您的好友,您可以在教育文库中查看更多范文。 北京森馥科技股份有限公司 前言: 一个好的程序编写规范是编写高质量程序的保证。清晰、规范的源程序不仅仅是方便阅读,更重要的是能够便于检查错误,提高调试

效率,从而最终保证软件的质量和可维护性。 说明: 本规范适用于公司内使用c语言编码的所有软件。本规范自发布之日起生效,以后新编写的和修改的代码应遵守本规范。 注:使用固件和操作系统源代码应保留其代码风格 1 北京森馥科技股份有限公司 目录 1.排版与格式................................................................................................................. ....................................32.标识符命名与定义................................................................................................................. ........................43.注释书写规范................................................................................................................. .. (6) 2 北京森馥科技股份有限公司 1.排版与格式 规则1:程序块采用缩进风格编写,每级缩进为4个空格。 程序块采用缩进风格编写,每级缩进为4个空格,不使用TAb键,

FORTRAN 90 程序编程规范

FORTRAN 90 程序编程规范 Fortran 90 编程规范,使程序代码高度组织化,更加易读、易懂、易于维护,程序更加高效。使编出的程序更易懂、易于维护。 1 语言选择 数值预报创新系统软件开发应避免使用Fortran77 的某些过时特征以Fortran 90不一致的特征。选择Fortran 90 作为开发语言,并采用Fortran 90 的新功能,如动态内存的分配(dynamic memory allocation)、递归(recursion ), 模块(modules)、POINTER 、长变量名、自由格式等。 Fortran 77其中某些只是一些冗余的功能,这些功能已经过时,另外,还有一些在Fortran90 中被证明是不好的用法,建议不要使用。 2 Fortran 90 的新特性 2.1.1 建议使用的Fortran 90 新特性 建议使用Fortran 90 提供的模块(module ),并用Use ONLY 指定module 中哪些变量或派生类型定义可用于调用程序。 尽量使用数组下标三元组,这样可优化并减少所需的代码行数。为提高可读性,要在括号内表明数组的维数,例如: 1dArrayA(:) = 1dArrayB(:) + 1dArrayC(:) 2dArray(: , :) = scalar * Another2dArray(: , :) 当访问数组的子集时,例如在有限差分等式中,可以通过使用下标三元组实现。例如:2dArray(: , 2:len2) = scalar *( & Another2dArray(:, 1:len2 -1) & - Another2dArray(:, 2:len2) & ) 对程序单元(program units )命名,并使用End program ,End subroutine ,End interface ,End module 等结构再次指定“program unit ”的名称。 在逻辑表达式中使用>、 >=、 ==、 <、 <=、 /=,它们分别代 替.gt.、.ge.、.eq.、.lt.、.le.、.ne. 。新的表示方法更接近标准的数学符号 在变量定义中始终使用“::”;始终用“DIMENSION ”定义数组形状;始终用(len=)的语法格式声明字符变量的长度。

施工许可证编码规则

工程代码编制规则和结构 一、编制规则 1、主编码的字母和数字,按顺序分别代表建设工程所在的地域[河北省、设区的市、县(县级市)、区]、工程管理权限、工程报建年度、本年度工程编排顺序号。 2、辅助编码代表主编码已确定的该建设工程中,根据承发包和招投标确定的各个子项的顺序号。 二、建设工程代码的结构 1、主编码的结构。主编码从左到右的含义是: 第一、二位表示建设工程所在的省,其代码统一用“13”表示。 第三、四、五、六位表示建设工程的在设区的市的市区或其所属的县(县级市)、区。 一至六位地域码按照《河北省行政区划地址代码》对照编写。 跨地区建设工程的代码为:1300KA表示跨省、1300KB表示跨设区的市、1300KC表示跨县、区。 第七位表示建设工程的管理权限,分别用J、S、X、H字母表示省、设区的市、县(县级市、区)和华北石油管理局管理的工程。 第八、九位表示报建年度,由两位阿拉伯数字表示,其中1999年度报建的工程用“99”表示;2000年度开始及以后年度报建的工程分别用“00、01、02、……99”表示。 第十、十一、十二位分别用阿拉伯数字按顺序表示本年度、本区域内按照报建确定的建设工程总数的顺序号。从本办法实施起报建的

工程从“001、002……”开始编制。 2、辅助编码的结构。辅助编码由两位阿拉伯数字按顺序从“01、02……”开始分别表示。 三、工程代码编制示例 例如:唐山市市区内99年报建的市管第121个工程项目(住宅小区)的某一项发包的工程编码为130201S99121-01,其中13表示河北省,02表示唐山市,01表示唐山市市区,S表示市管工程,99表示99年报建,121表示第121项工程,01表示其中的第一项发包工程。

程序编码规范

蜗牛游戏程序编码规范 (版本 0.1) 规范说明:............................................................. 一、命名规则...................................................... 二、程序的版式.................................................... 三、注释.......................................................... 四、服务端平台无关................................................ 五、服务端表格操作................................................ 六、客户端文件读写................................................ 七、客户端内存操作................................................ 八、脚本内的注释.................................................. 规范说明: 制定该规范的目的是让程序清晰易懂、易维护、易管理。该规范为强制规范,必须执行,如果有没涉及的地方请参考《高质量C++-C编程指南》。当所在编程环境(如MFC、Linux)与本规范有差异时,可以使用所在编程环境的规范,但是同一个项目必须是统一的规范。 最后希望大家都能养成一个良好的程序习惯,一个好的习惯受益终身! 一、命名规则 1.所有命名应当直观且可拼读,并具有实际意义; 2.类名和函数名用大写字母开头的单词组合而成,接口类名以I开头; 3.常量全用大写的字母,用下划线分割单词,尽量不要使用宏; 4.类的数据成员加前缀m_,全局变量加前缀g_,静态变量加前缀s_; 5.变量名第一个字母小写,使用“名词”或“形容词+名词”的词义表示法; 示例: ·局部变量 char *pStringBuffer; int &stringFindResult; bool isEngineStartup; ·函数命名 unsigned int GetVoyageCoreState(); static bool GetVoyageServiceCount(int &count); ·结构类型

工程代码编码规范

4.3代码编制 A.4淮河流域片 淮河流域片流域(水系)分区编码按表A.4的规定执行。 13 SL 213—2012 表A.4淮河流域片流域l水系)分区编码 分区编码分区名称分区编码分区名称 EA 淮河干流水系 EC 里下河水系 EB 沂沭泗水系 DD 山东半岛及沿海诸河水系 A.5长江流域片 长江流域片流域(水系)分区编码按表A.5的规定执行。 表A.5长江流域片流域(水系)分区编码 分区编码分区名称分区编码分区名称 FA 长扛干流水系 FH 鄱阳湖水系 FB 雅砻江水系 FJ 太湖水系 FC 岷江水系 JB 澜沧扛捐公河流域 FD 嘉陵江水系 JC 怒江、伊涪瓦底江流域 FE 乌江水系 JD 雅鲁藏布江一布拉马普特拉河流域 FF 洞庭湖水系 JE 狮泉河印度河流域 FG 汉江水系 KM 西藏内流区 A.6东南沿海流域片 4.3.1河流代码 a)编码规则:用8位字母和数字的组合码分别表示河流的工程类别、所在流域或水系、编号及类别。 b)代码格式:ABTFFSSY。 c)说明: A——1位字母,表示工程类别,取值为A。 BT——2位字母,表示流域(水系)分区编码,详见附录A。 FFss——4位数字或字母,表示任意一条河流的编号,F、S取值范围为o~9、A~Y。字段含 义按表1的规定执行。 注:当代码位数不够或对于不易分辨上下游关系的河网地区,取消对FFSS的限制。取消限制条件的顺序为: 取消ss第二个S为0的限制,仍不满足时,取消对FF中00~09作为干流或于流不同河段代码的限制。 Y——1位数字,表示河流类别,取值按表2的规定执行。 表1河流代码FFSS字段规定 字段字段描述 2位数字或字母,表示一级支流的编号,F取值范围为o~9、A~Y.其中00~09作为千流或干流不同河段的

项目代码拆分单项工程编码规则

项目代码拆分单项工程编码规则 (试行) 固定资产投资项目代码制度是《中共中央国务院关于深化投融资体制改革的意见》(中发〔2016〕18号)、《企业投资项目核准和备案管理条例》(国务院令第673号)、《政府投资条例》(国务院令第712号)明确规定的投资管理基本制度。项目代码是项目整个建设周期的唯一身份标识,一项一码,统一通过广东省投资项目在线审批监管平台生成。项目根据实际情况,确需拆分为两个或两个以上单项工程分别办理报建审批手续的,可以对项目代码进行拆分,形成工程代码,在城市工程建设项目审批管理系统中流转使用。以工程代码办理相关审批手续、形成的单项工程实施、建设进展、监管(处罚)等相关信息,统一汇集至项目代码,通过广东省投资项目在线审批监管平台在各级有关部门间实现信息共享。为规范项目代码的拆分和应用管理,特制定本规则。

一、范围 本规则规定了项目、项目代码及工程代码的定义,代码拆分阶段、拆分流程、工程代码结构,以及代码的管理和应用等方面的相关标准和要求。 本规则主要适用于广东省内各级有关部门(不含深圳市)审批、核准、备案的房屋建筑和城市基础设施等工程建设项目。其他项目可参照本规则执行。 二、定义 (一)项目。指在广东省内投资建设的固定资产投资项目。指有一个主导功能、有一个总体设计、经济上统一核算、实施中统一管理、包含一个或者一系列有内在联系的单项工程的固定资产投资活动。不论是主体工程还是相应的附属配套工程,不论是由一个还是由几个施工单位施工,不论是同期建设还是分期建设,都是一个项目。项目的名称和建设内容及规模等,由项目审批、核准、备案机关出具的项目审批、核准、备案文件确定。 (二)项目代码。指通过广东省投资项目在线审批监管平台生成的项目代码,是项目整个建设周期的唯一身份标识,一项一码。项目代码编码规则,按照国家发展改革委统一制定的编码规则执行。 (三)工程代码。指项目根据实际情况需要,拆分为两个或两个以上单项工程(包括主体工程、配套工程、分段或分期

后台Java程序编码标准

后台Java程序编码标准

————————————————————————————————作者:————————————————————————————————日期:

Java程序编码规范 后台技术中心 编写人:汪源 编写时间:2009-3-27 部门名:后台技术中心

修订记录 编号修订内容简述修订日期版本修订人1 初始版本2009-3-27 0.1 汪源

总体约定 1.一个工程中的所有文件应统一使用GBK或UTF-8编码。 2.代码使用大小为4的TAB缩进。 3.代码使用package组织,package名应以https://www.wendangku.net/doc/217762705.html,ease.开关。 4.使用Vector等集合框架类时,应指定模板类型参数。 命名规范 类名、文件名、枚举变量等统一使用首字母大写,如 01 class TableInfo { 02 ... 03 }; 函数参数、局部变量、函数名等统一使用Sun风格的命名,即第一个单词小写,其它单词首字母大写,如: 01 int maxLength; 02 NtseIndex *primaryKey; 03 bool dropTable(...) { 04 // 05 } 不允许使用匈牙利式命名法。 常量统一使用全大写,单词之间用_连接,如: 01 static final int NTSE_NAME_LEN; 目录名统一使用全小写字母,单词之间用-连接。 语句 主要是{放在同一行及空格使用上的约定。 if/else形如(注意其中每个空格的位置): 01 if (xxx) { 02 ... 03 } else if (xxx) { 04 ... 05 } else { 06 ... 07 }

软件编码规范.doc

软件编码规范 中国人民银行清算总中心 支付系统开发中心

注:变化状态:A—增加,M—修改,D—删除

目录 第一篇C/C++编码规范 (6) 第一章代码组织 (6) 第二章命名 (9) 2.1文件命名 (9) 2.2变量命名 (9) 2.3常量与宏命名 (10) 2.4类命名 (10) 2.5函数命名 (10) 2.6参数命名 (11) 第三章注释 (12) 3.1文档化注释 (12) 3.2语句块注释 (17) 3.3代码维护注释 (20) 第四章编码风格 (22) 4.1排版风格 (22) 4.2头文件 (26) 4.3宏定义 (27) 4.4变量与常量 (30) 4.5条件判断 (32) 4.6空间申请与释放 (33) 4.7函数编写 (33) 4.8类的编写 (37) 4.9异常处理 (40) 4.10特殊限制 (40) 第五章编译 (41) 第六章ESQL/C编码 (46) 第二篇JAVA编码规范 (47) 第一章代码组织 (48) 第二章命名 (51) 2.1包命名 (51) 2.2类命名 (51) 2.3接口命名 (51) 2.4方法命名 (51) 2.5变量命名 (51) 2.6类变量命名 (52) 2.7常量命名 (52) 2.8参数命名 (52) 第三章注释 (53) 3.1文档化注释 (53) 3.2语句块注释 (57) 3.3代码维护注释 (59) 第四章编码风格 (61) 4.1排版风格 (61) 4.2包与类引用 (66) 4.3变量与常量 (66) 4.4类编写 (67) 4.5方法编写 (68)

4.6异常处理 (71) 4.7特殊限制 (71) 第五章编译 (73) 第六章JSP编码 (74) 6.1文件命名及存放位置 (74) 6.2内容组织 (74) 6.3编码风格 (76) 6.4注释 (78) 6.5缩进与对齐 (78) 6.6表达式 (79) 6.7JavaScript (79) 第三篇POWERBUILDER编码规范 (80) 第一章代码组织 (81) 第二章命名 (82) 2.1文件命名 (82) 2.2对象命名 (82) 2.3变量命名 (84) 2.4常量命名 (85) 2.5函数与事件命名 (85) 2.6参数命名 (85) 第三章注释 (85) 3.1文档化注释 (85) 3.2语句块注释 (88) 3.3代码维护注释 (88) 第四章编码风格 (89) 4.1界面风格 (89) 4.2排版风格 (93) 4.3变量与常量 (95) 4.4条件判断 (96) 4.5空间申请与释放 (97) 4.6函数编写 (97) 4.7特殊限制 (97) 第五章SQL编码 (98)

相关文档