📄 c语言编程规范.htm
字号:
WPARAM类型 wParam,<br>LPARAM类型 lParam<br>HWND类型 hDlg;<br>HDC类型 hDC;<br>HINSTANCE类型 hInstance<br>HANDLE类型 hInstance,<br>HICON类型 hIcon;<br>int iTmp<br>float fTmp<br>DWORD dw*<br>String , AnsiString str *<br>m_ 类成员变量 m_nVal, m_bFlag<br>g_ 全局变量 g_nMsg, g_bFlag<br>局部变量中可采用如下几个通用变量:nTemp,nResult,I,J(一般用于循环变量)。<br>其他资源句柄同上<br>.3常量命名和宏定义<br>常量和宏定义必须具有一定的实际意义;<br>常量和宏定义在#include和函数定义之间;<br>常量和宏定义必须全部以大写字母来撰写,中间可根据意义的连续性用下划线连接,每一<br>条定义的右侧必须有一简单的注释,说明其作用;<br>资源名字定义格式:<br>菜单:IDM_XX或者CM_XX<br>位图:IDB_XX<br>对话框:IDD_XX<br>字符串:IDS_XX<br>DLGINIT:DIALOG_XX<br> ICON:IDR_XX<br>.4函数命名<br>函数原型说明包括引用外来函数及内部函数,外部引用必须在右侧注明函数来源:模<br>块名及文件名, 如是内部函数,只要注释其定义文件名;<br>第一个字母必须使用大写字母,要求用大小写字母组合规范函数命名,必要时可用下划线<br>间隔,示例如下:<br>void UpdateDB_Tfgd (TRACK_NAME); file://Module Name :r01/sdw.c<br>void PrintTrackData (TRACK_NAME); file://Module Name :r04/tern.c<br>void ImportantPoint (void); file://Module Name :r01/sdw.c<br>void ShowChar (int , int , chtype); file://Local Module<br>void ScrollUp_V (int , int); file://Local Module<br>.5结构体命名<br>结构体类型命名必须全部用大写字母,原则上前面以下划线开始;结构体变量命名必须用<br>大小写字母组合,第一个字母必须使用大写字母,必要时可用下划线间隔。对于私有数<br>据区,必须注明其所属的进程。全局数据定义只需注意其用途。<br> 示例如下:<br> typedef struct<br> {<br> char szProductName[20];<br> char szAuthor[20];<br><br> char szReleaseDate[16];<br> char szVersion[10];<br> unsigned long MaxTables;<br> unsigned long UsedTables;<br>}DBS_DATABASE;<br>DBS_DATABASE GdataBase;<br><br>6 控件的命名:<br>用小写前缀表示类别<br>用小写前缀表示类别:<br>fm 窗口<br>cmd 按钮<br>cob combo,下拉式列表框<br>txt 文本输入框<br>lab labal,标签<br>img image,图象<br>pic picture<br>grd Grid,网格<br>scr 滚动条<br>lst 列表框<br>frm fram<br><br>7注释<br>原则上注释要求使用中文;<br>文件开始注释内容包括:公司名称、版权、作者名称、时间、模块用途、背景介绍等,复<br>杂的算法需要加上流程说明;<br>函数注释包括:输入、输出、函数描述、流程处理、全局变量、调用样例等,复杂的函数<br>需要加上变量用途说明;<br>程序中注释包括:修改时间和作者、方便理解的注释等;<br><br><br> 引用一: 文件开头的注释模板<br>/******************************************************************<br>** 文件名:<br>** Copyright (c) 1998-1999 *********公司技术开发部<br>** 创建人:<br>** 日 期:<br>** 修改人:<br>** 日 期:<br>** 描 述:<br>**<br>** 版 本:<br>**--------------------------------------------------------------------------<br>---<br><br><br>******************************************************************/<br><br> 引用二: 函数开头的注释模板<br>/*****************************************************************<br>** 函数名:<br>** 输 入: a,b,c<br>** a---<br>** b---<br>** c---<br>** 输 出: x---<br>** x 为 1, 表示...<br>** x 为 0, 表示...<br>** 功能描述:<br>** 全局变量:<br>** 调用模块:<br>** 作 者:<br>** 日 期:<br>** 修 改:<br>** 日 期:<br>** 版本<br>****************************************************************/<br> 引用三: 程序中的注释模板<br>/*----------------------------------------------------------*/<br>/* 注释内容 */<br>/*----------------------------------------------------------*/<br>8 程序<br>a. 程序编码力求简洁,结构清晰,避免太多的分支结构及太过于技巧性的程序,<br>尽量不采用递归模式。<br>b. 编写程序时,亦必须想好测试的方法,换句话说,”单元测试” 的测试方案应<br>在程序编写时一并拟好。<br>c. 注释一定要与程序一致。<br>d. 版本封存以后的修改一定要将老语句用/* */ 封闭,不能自行删除或修改,并要<br>在文件及函数的修改记录中加以记录。<br>e. 程序中每个block 的开头 ”{" 及 "}” 必须对齐,嵌套的block 每进一套,<br>缩进一个tab,TAB 为4个空格,block类型包括if、for、while、do等关键字引出的。<br>f. 对于比较大的函数,每个block 和特殊的函数调用,都必须注明其功能,举例如下<br>:<br>count.divisor = 1193280 / freq; // compute the proper count<br>OutByte((unsigned short)67, (unsigned char)182); // tell 8253 that a<br>count is coming<br>OutByte((unsigned short)66, count. c[0]); // send low-order byte<br>OutByte((unsigned short)66, count. c[1]); // send high-order byte<br><br>×××××××××××××××××××××××××××××××××××××××<br>bcb,delphi中的变量命名:<br> 遵循匈牙利命名法,命<br>名必须有意义,制定如下规定<br> 窗体:以大写的W开始,如About版权窗体, 命名为WAbout<br>文件:以大写的F开始,如About版权窗体,文件命名为FAbout.cpp<br>按钮(Button):如退出按钮,命名为btnExit<br> ……<br> 基类:加base标记,如报表基类,窗体命名为:WBaseRep, 文件命名为FBaseRep.cpp<br><br>转贴<br>> 1. 在.h/.cpp的开头应有一段格式统一的说明,内容包括:<br>> a. 文件名 (FileName);<br>> b. 创建人 (Creater);<br>> c. 文件创建时间 (Date);<br>> d. 简短说明文件功能、用途 (Comment)。<br>好习惯<br>> 2. 除非极其简单,否则对函数应有注释说明。内容包括:功能、入口/出口参数,必<br>要<br>> 时还可有备注或补充说明。<br>还是好习惯<br>> 3. 每列代码的长度推荐为 80列,最长不得超过120列;折行以对齐为准。<br>太宽了,我的限制是60列,因为文本方式下屏幕一共80列,如果你用BC这一类的编辑<br>器,窗口边框等又要占据一定空间,所以80列太宽<br>> 4. 循环、分支代码,判断条件与执行代码不得在同一行上。<br>很对<br>> 5. 指针的定义,* 号既可以紧接类型,也可以在变量名之前。<br>><br>> 例:可写做:int* pnsize;<br>><br>> 也可写做:int *pnsize;<br>><br>> 但不得写做:int * pnsize;<br>建议采用第二种,除非附加另外一条规定:一次只声明一个变量,否则就会让人混淆,<br>比如:<br>int* a, b;<br>看起来b好像也是个指针,其实不是。<br>> 6. 在类的成员函数内调用非成员函数时,在非成员函数名前必须加上"::"。<br>这一条我倒觉得并不是必需的,我的看法是决不要让你的类成员函数和全局函数的名称<br>相同(或类似)<br>> 7. 函数入口参数有缺省值时,应注释说明。<br>><br>> 例:BOOL CWpsDib::PaintDIB(CDC* pDC, CRect& rc,<br>> int nBrightness, file://*=0*//<br>> BOOL bGrayScale file://*=FALSE*// )<br>每个变量写一行,必要时加上/*in, out*/注释<br>> 8. else if 必须写在一行。<br>应该尽量避免else if这样的结构<br>> 9. 与‘{’、‘}’有关的各项规定:<br>><br>> 9.1‘{’、‘}’应独占一行。在该行内可有注释。<br>> 9.2 ‘{’必须另起一行,‘{’ 之后的代码必须缩进一个Tab。‘{’与‘}’必须在<br>同<br>> 一列上。<br>> 9.3 在循环、分支之后若只有一行代码,虽然可省略‘{’、‘}’,但不推荐这么<br>> 做。若省略后可能引起歧义,则必须加上‘{’、‘}’。<br>持保留意见,因为GNU的代码规范是这样的:<br>if ( NULL == ptr )<br> {<br> // do something here<br> }<br>或者<br>if ( NULL == ptr ) {<br> // do something here<br>}<br>争论哪个更好并没有意义,关键是统一,如果用VC当然你的办法最方便,可是如果你用<br>emacs或者vi,就不是这样了。<br>> 10. 与空格有关的各项规定。<br>><br>> 10.1 在所有两目、三目运算符的两边都必须有空格。在单目运算符两端不必空格。<br>但<br>> 在‘—>’、‘::’、‘.’、‘[’、‘]’等运算符前后,及‘&’(取地址)、‘*<br>> ’(取值)等运算符之后不得有空格。<br>> 10.2 for、while、if 等关键词之后应有1个空格,再接‘(’,之后无空格;在结<br>尾<br>> 的‘)’前不得有空格。<br><br>我认为在括号两端加空格并不是什么错误,尤其是在一个条件十分复杂的if语句里<br>> 10.3 调用函数、宏时,‘(’、‘)’前后不得有空格。<br>> 10.4 类型强制转换时,‘(’‘)’前后不得有空格<br>同上<br>> 11. 与缩进有关的各项规定<br>><br>> 11.1 缩进以 Tab 为单位。1 个 Tab 为 4 个空格<br>我认为这个值应该更大,我自己使用8个空格,如果你的代码因为缩进幅度太大而导致<br>折行,那么几乎可以肯定你的程序设计方案有问题。<br>> 11.2 下列情况,代码缩进一个 Tab:<br>> 1. 函数体相对函数名及'{'、'}'。<br>> 2. if、else、for、while、do 等之后的代码。<br>> 3. 一行之内写不下,折行之后的代码,应在合理的位置进行折行。若有 + - * / 等<br>运<br>> 算符,则运算符应在上一行末尾,而不应在下一行的行首。<br>这一条我反对,运算符应该放在下一行行首,以使人能清楚的知道这一行是续上一行<br>的,比如<br>if ( something<br> && somethingelse<br> && otherthings )<br>如果写做<br>if ( something &&<br> somethingelse &&<br> otherthings )<br>反而看不清楚<br>> 11.3 下列情况,不必缩进:switch 之后的 case、default。</td>
</tr>
<tr>
<td width="600"></td>
</tr>
<tr>
<td width="600"><b>郑重声明</b><br>
近年来我站数百篇“原创文章”被一些媒体肆意转载,不但不标明出自“中国电子技术信息网”,而且把相关字眼删除!这是无视技术价值的盗窃行为,是对技术人员辛勤劳动的蔑视,我对此种行为表示强烈的谴责。<br>
“本是同根生,相煎何太急”,考虑到我们做技术的都是同门兄弟,对以前的盗窃行为不再追究,今后再有此类事件,最低处理限度是“明示于天下”。在这里向转载过又标注了出处的兄弟媒体表示崇高的敬意!<br>
兄弟网站如果引用本站“原创文章”,请首先经本人许可,并标注“www.cetinet.com”或“中国电子技术信息网”字样。<br>
欢迎个人下载使用!</td>
</tr>
</table>
</td>
</tr>
</table>
<br>
<br>
</div>
</body>
<body bgcolor="#FFFFFF" text="#000000">
<p align="center">
本站所载文章力求原创,部分资料转自网上,假如您认为某些文章侵犯了您的权益,<br>
请告知我们,我们将在最短的时间内删除有关文章。本站转载文章均注明出处。<br>
兄弟网站如果转载本站文章请注明本站版权,谢谢!
<p align="center">中国电子技术信息网 文章管理系统由:Aoe 制作<br>
Copyright (C) 2001-2004 CETINet.COM All Rights Reserved
</body>
</html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -