,减少参数占用的堆栈,传递大结构的参 数,一律采用指针或引用方式传递。 错误!未找到引用源。 、为了便于其他程序员识别某个指针参数是入口参数还是出口参数, 同时便于编译器检查错误,应该在入口参数前加入const标志。如: ……CopyString(const char * c_szSource, char * szDest) 4、引出函数规范: 对于从动态库引出作为二次开发函数公开的函数,为了能与其他函数以及Windows的 函数区分,采用类别前缀+基本命名规则的方法命名。例如:在对动态库中引出的一个图象 编辑的函数定义为 imgFunctionname(其中img为image缩写)。 现给出三种库的命名前缀: ①、对通用函数库,采用cm为前缀。 ②、对三维函数库,采用vr为前缀。 ③、对图象函数库,采用img为前缀。 对宏定义,结果代码用同样的前缀。 5、文件名(包括动态库、组件、控件、工程文件等)的命名规范:
文件名的命名要求表达出文件的内容, 要求文件名的长度不得少于5个字母, 严禁使用 象file1,myfile之类的文件名。
三、注释规范:
1、函数头的注释 对于函数, 应该从 “功能” , “参数” , “返回值” 、 “主要思路” 、 “调用方法” 、 “创建日期” 、 “维护记录”六个方面,例如函数 double GetDistance(const POINT3d A, const POINT3d B) 的函数头的注释格式可以如下:
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////GeoView_Tech_Mark_Begin //==================================================================// //GeoView_Doc_Mark_Begin // 函 数 名: GetDistance // 功 // 参 // // // // 返 // (出口): 能: 求两点间的距离 数: const POINT3d A, const POINT3d B (入口): A: 点A B: 点B 无 回: double: 点A与点B之间的距离(欧氏距离) POINT3d A = {0.0, 0.0, 0.0}, B = {1.0, 2.0, 3.0}; //
// 调用方法: double dDist = 0.0;
武汉地大坤迪科技有限公司
// dDist = GetDistance(A, B); //
//GeoView_Doc_Mark_End // 主要思路: 使用欧氏距离的计算公式求出两点的距离 // 参 阅: 欧几里德德《几何原理》 // 创建日期: 2004-3-8: 张三 // 修改日期: 2004-3-8: 李四, 修改了计算公式, 原来的有错误
//==================================================================// double GetDistance(const POINT3d A, const POINT3d B) ////GeoView_Tech_Mark_End { ?? } // 函数实现部分
其中GeoView_Tech_Mark_Begin到GeoView_Tech_Mark_End部分用于自动提技术开发文 档的标识,GeoView_Doc_Mark_Begin到GeoView_Doc_Mark_End部分用于自动提取二次开发
文档的标识。 ①、对于某些函数,其部分参数为传入值,而部分参数为传出值,所以对参数要详细说明该 参数是入口参数,还是出口参数,对于某些意义不明确的参数还要做详细说明(例如: 以角度作为参数时,要说明该角度参数是以弧度(PI),还是以度为单位),对既是入口 又是出口的变量应该在入口和出口处同时标明。等等。 ②、函数的注释应该放置在函数的头文件中, 在实现文件中的该函数的实现部分应该同时放 置该注释。 ③、在注释中应该详细说明函数的主要实现思路、 特别要注明自己的一些想法, 如果有必要 则应该写明对想法产生的来由。对一些模仿的函数应该注释上函数的出处。 ④、在注释中详细注明函数的适当调用方法, 对于返回值的处理方法等。 在注释中要强调调 用时的危险方面,可能出错的地方。 ⑤、对修改日期的注释要求记录整个修改过程和修改人。 如果算法比较复杂,或算法中的变量定义与位置有关,则要求对变量的定义进行图解。对难 以理解的算法能图解尽量图解。 2、变量的注释: 对于变量的注释紧跟在变量的后面说明变量的作用。 原则