好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

c++代码编码规范.docx

10页
  • 卖家[上传人]:工****
  • 文档编号:556244556
  • 上传时间:2023-06-04
  • 文档格式:DOCX
  • 文档大小:21.55KB
  • / 10 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 一、 排版与注释1.1强制(强制)函数有效代码的规模尽量限制在100行以内(强制)循环、判断等语句中若有较长的表达式或语句,则要进行适应的划分,长表达式要在低优先级操作符处划分新行,操作符放在新行之首不允许把多个短语句写在一行中,即一行只写一条语句若函数或过程中的参数较长,则要进行适当的划分强制)函数或过程的开始、结构的定义及循环、判断等语句中的代码都要采用缩进风格,case语句下的情况处理语句也要遵从语句缩进要求强制)程序块的分界符(如C/C++语言的大括号‘{’和‘}’)应各独占一行并且位于同一列,同时与引用它们的语句左对齐在函数体的开始、类的定义、结构的定义、枚举的定义以及if、for、do、while、switch、case语句中的程序都要采用如上的缩进方式强制)边写代码边注释,修改代码同时修改相应的注释,以保证注释与代码的一致性不再有用的注释要删除强制)注释应与其描述的代码相近,对代码的注释应放在其上方或右方(对单条语句的注释)相邻位置,不可放在下面例1://get replicate sub system index and net indicator repssn_ind = ssn_data[index].repssn_index;repssn_ni = ssn_data[index].ni;例2:repssn_ind = ssn_data[index].repssn_index;repssn_ni = ssn_data[index].ni;// get replicate sub system index and net indicator 应如下书写// get replicate sub system index and net indicator repssn_ind = ssn_data[index].repssn_index;repssn_ni = ssn_data[index].ni;" (强制)所有成员函数的实现不要放在class声明中,即使函数体为空(强制)每个空的循环体都需要给出确认性注释 提示自己和别人,这个空循环确实是有意为之,并不是遗漏语句而导致的;这样做提高了程序的可读性和可维护性。

      强制)每个文件都必须有说明性注释、函数头部应该进行注释文件头统一注释格式://作者//版权//功能//日期//(其他需要的说明或备注)函数头统一注释格式://功能//参数//返回值//说明//todo(选择性)1.2重要(重要)if、for、do、while、case、switch、default等语句自占一行,且if、for、do、while等语句的执行语句部分无论多少都要加括号{}重要)对变量的定义和分支语句(条件分支、循环语句等)必须编写注释说明:这些语句往往是程序实现某一特定功能的关键,对于维护人员来说,良好的注释帮助更好的理解程序,有时甚至优于看设计文档" (重要)对于所有有物理含义的变量、常量,如果其命名不是充分自注释的,在声明时都必须加以注释,说明其物理含义变量、常量、宏的注释应放在其上方相邻位置或右方示例:// active statistic task number #define MAX_ACT_TASK_NUMBER 1000#define MAX_ACT_TASK_NUMBER 1000 //active statistic task number " (重要)注释的内容要清楚、明了,含义准确,防止注释二义性。

      说明:错误的注释不但无益反而有害重要)修改代码时需要添加注释,并且表名修改的开始位置和结束位置以及相关日期等信息,要注意嵌套问题,需要及时修改已存在的注释(重要)数据结构声明(包括数组、结构、类、枚举等),如果其命名不是充分自注释的,必须加以注释对数据结构的注释应放在其上方相邻位置,不可放在下面;对结构中的每个域的注释放在此域的右方// sccp interface with sccp user primitive message name enum SCCP_USER_PRIMITIVE{ N_UNITDATA_IND, // sccp notify sccp user unit data come N_NOTICE_IND, // sccp notify user the No.7 network can not // transmission this message N_UNITDATA_REQ, // sccp user's unit data transmission request};(重要)全局变量要有较详细的注释,包括对其功能、取值范围、哪些函数或过程存取它以及存取时注意事项等的说明。

      1.3推荐(推荐)对于switch语句下的case语句,如果因为特殊情况需要处理完一个case后进入下一个case处理,必须在该case语句处理完、下一个case语句前加上明确的注释推荐)通过对函数或过程、变量、结构等正确的命名以及合理地组织代码的结构,使代码成为自注释的说明:清晰准确的函数、变量等的命名,可增加代码可读性,并减少不必要的注释" (推荐)在代码的功能、意图层次上进行注释,提供有用、额外的信息说明:注释的目的是解释代码的目的、功能和采用的方法,提供代码以外的信息,帮助读者理解代码,防止没必要的重复注释信息" "示例:如下注释意义不大// if receive_flag is TRUE if (receive_flag)而如下的注释则给出了额外有用的信息 // if mtp receive a message from links if (receive_flag)(推荐)在程序块的结束行右方加注释标记,以表明某程序块的结束说明:当代码段较长,特别是多重嵌套时,这样做可以使代码更清晰,更便于阅读if (...){ // program code while (index < MAX_INDEX) { // program code } // end of while (index < MAX_INDEX) // 指明该条while语句结束} // end of if (...) // 指明是哪条if语句结束" (推荐)相对独立的程序块之间、变量说明之后必须加空行。

      示例:如下例子不符合规范if (!valid_ni(ni)){ ... // program code}repssn_ind = ssn_data[index].repssn_index;repssn_ni = ssn_data[index].ni;应如下书写if (!valid_ni(ni)){ ... // program code}repssn_ind = ssn_data[index].repssn_index;repssn_ni = ssn_data[index].ni; (推荐)在两个以上的关键字、变量、常量进行对等操作时,它们之间的操作符之前、之后或者前后要加空格;进行非对等操作时,如果是关系密切的立即操作符(如->),后不应加空格说明:采用这种松散方式编写代码的目的是使代码更加清晰由于留空格所产生的清晰性是相对的,所以,在已经非常清晰的语句中没有必要再留空格,如果语句已足够清晰则括号内侧(即左括号后面和右括号前面)不需要加空格,多重括号间不必加空格,因为在C/C++语言中括号已经是最清晰的标志了在长语句中,如果需要加的空格非常多,那么应该保持整体清晰,而在局部不加空格。

      给操作符留空格时不要连续留两个以上空格示例:(1) 逗号、分号只在后面加空格int a, b, c; (2)比较操作符, 赋值操作符""=""、 ""+="",算术操作符""+""、""%"",逻辑操作符""&&""、""&"",位域操作符""<<""、""^""等双目操作符的前后加空格if (current_time >= MAX_TIME_VALUE) a = b + c;a *= 2;a = b ^ 2;(3)""!""、""~""、""++""、""--""、""&""(地址运算符)等单目操作符前后不加空格p = 'a'; // 内容操作""*""与内容之间flag = !isEmpty; // 非操作""!""与内容之间p = &mem; // 地址操作""&"" 与内容之间i++; // ""++"",""--""与内容之间(4)""->""、"".""前后不加空格p->id = pid; // ""->""指针前后不加空格(5) if、for、while、switch等与后面的括号间应加空格,使if等关键字更为突出、明显。

      if (a >= b && c > d)" 1.4一般(一般)使用C++风格的注释说明:除非必要的情况下,否则用使用//代替/**/" (一般)注释应考虑程序易读及外观排版的因素,使用的语言若是中、英兼有的,建议多使用中文,除非能用非常流利准确的英文表达 (一般)避免在注释中使用缩写,特别是非常用缩写说明:在使用缩写时或之前,应对缩写进行必要的说明一般)注释与所描述内容进行同样的缩排说明:可使程序排版整齐,并方便注释的阅读与理解" "示例:如下例子,排版不整齐,阅读稍感不方便void example_fun( void ){// code one comments CodeBlock One // code two comments CodeBlock Two}应改为如下布局void example_fun( void ){ // code one comments CodeBlock One //code two comments CodeBlock Two}二、标识符命名2.1强制(强制)变量命名需要加前缀前缀作用域放在下滑线前:sgmms类型前缀:short/int/unsigned char/byte nlong llong llbool bchar */数组 szchar c指针 p(放最前面)double/float fenum estruct ststring strmap mvector 。

      点击阅读更多内容
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.