C语言编程规范Word格式.docx

上传人:b****6 文档编号:18143738 上传时间:2022-12-13 格式:DOCX 页数:77 大小:62.46KB
下载 相关 举报
C语言编程规范Word格式.docx_第1页
第1页 / 共77页
C语言编程规范Word格式.docx_第2页
第2页 / 共77页
C语言编程规范Word格式.docx_第3页
第3页 / 共77页
C语言编程规范Word格式.docx_第4页
第4页 / 共77页
C语言编程规范Word格式.docx_第5页
第5页 / 共77页
点击查看更多>>
下载资源
资源描述

C语言编程规范Word格式.docx

《C语言编程规范Word格式.docx》由会员分享,可在线阅读,更多相关《C语言编程规范Word格式.docx(77页珍藏版)》请在冰豆网上搜索。

C语言编程规范Word格式.docx

10.0*0.1==1.0,不可靠

4.7程序与环境或状态发生关系时,必须主动去处理发生的意外事件,如文件能否

逻辑锁定、打印机是否联机等。

4.8单元测试也是编程的一部份,提交联调测试的程序必须通过单元测试。

5.可重用性要求

5.1重复使用的完成相对独立功能的算法或代码应抽象为公共控件或类。

5.2公共控件或类应考虑OO思想,减少外界联系,考虑独立性或封装性。

5.3公共控件或类应建立使用模板。

附:

C++编程规范,delphi作相应的参考

1适用范围

本标准适用于利用VisulC++,BorlandC++进行软件程序开发的人员.。

.2变量命名

命名必须具有一定的实际意义,形式为xAbcFgh,x由变量类型确定,Abc、Fgh表示连续意

义字符串,如果连续意义字符串仅两个,可都大写.如OK.

具体例程:

BOOL类型 bEnable;

ch  *char             chText

c  *      类对象            cMain(对象实例)

h  *      Handle(句柄)        hWnd

i  *      int

n  *      无符号整型

p  *      指针

sz,str*      字符串

w          WORD

x,y         坐标

Char或者TCHAR类型   与WindowsAPI有直接联系的用szAppName[10]形式否则用

FileName[10]形式,单个字符也可用小写字母表示;

Int类型         nCmdShow;

LONG类型        lParam;

UINT类型        uNotify;

DWORD类型       dwStart;

PSTR类型        pszTip;

LPSTR类型       lpCmdLine

LPTSTR类型       lpszClassName;

LPVOID类型       lpReserved

WPARAM类型      wParam,

LPARAM类型       lParam

HWND类型        hDlg;

HDC类型         hDC;

HINSTANCE类型     hInstance

HANDLE类型       hInstance,

HICON类型        hIcon;

int            iTmp

float            fTmp

DWORD         dw*

String,AnsiString      str*

m_          类成员变量          m_nVal,m_bFlag

g_          全局变量           g_nMsg,g_bFlag

局部变量中可采用如下几个通用变量:

nTemp,nResult,I,J(一般用于循环变量)。

其他资源句柄同上

.3常量命名和宏定义

常量和宏定义必须具有一定的实际意义;

常量和宏定义在#include和函数定义之间;

常量和宏定义必须全部以大写字母来撰写,中间可根据意义的连续性用下划线连接,每一

条定义的右侧必须有一简单的注释,说明其作用;

资源名字定义格式:

菜单:

IDM_XX或者CM_XX

位图:

IDB_XX

对话框:

IDD_XX

字符串:

IDS_XX

DLGINIT:

DIALOG_XX

 ICON:

IDR_XX

.4函数命名

函数原型说明包括引用外来函数及内部函数,外部引用必须在右侧注明函数来源:

块名及文件名,如是内部函数,只要注释其定义文件名;

第一个字母必须使用大写字母,要求用大小写字母组合规范函数命名,必要时可用下划线

间隔,示例如下:

void UpdateDB_Tfgd(TRACK_NAME);

 file:

//Module Name:

r01/sdw.c

void PrintTrackData(TRACK_NAME);

file:

//ModuleName:

r04/tern.c

void ImportantPoint(void);

     file:

void ShowChar(int,int,chtype);

//LocalModule

void ScrollUp_V (int,int);

.5结构体命名

结构体类型命名必须全部用大写字母,原则上前面以下划线开始;

结构体变量命名必须用

大小写字母组合,第一个字母必须使用大写字母,必要时可用下划线间隔。

对于私有数

据区,必须注明其所属的进程。

全局数据定义只需注意其用途。

         示例如下:

         typedefstruct

         {

             char       szProductName[20];

             char       szAuthor[20];

             char       szReleaseDate[16];

             char       szVersion[10];

             unsignedlong   MaxTables;

             unsignedlong   UsedTables;

}DBS_DATABASE;

DBS_DATABASEGdataBase;

6控件的命名:

用小写前缀表示类别

用小写前缀表示类别:

fm      窗口

cmd     按钮

cob     combo,下拉式列表框

txt     文本输入框

lab     labal,标签

img     image,图象

pic     picture

grd     Grid,网格

scr     滚动条

lst     列表框

frm     fram

7注释

原则上注释要求使用中文;

文件开始注释内容包括:

公司名称、版权、作者名称、时间、模块用途、背景介绍等,复

杂的算法需要加上流程说明;

函数注释包括:

输入、输出、函数描述、流程处理、全局变量、调用样例等,复杂的函数

需要加上变量用途说明;

程序中注释包括:

修改时间和作者、方便理解的注释等;

  引用一:

文件开头的注释模板

/******************************************************************

**文件名:

**Copyright(c)1998-1999*********公司技术开发部

**创建人:

**日 期:

**修改人:

**描 述:

**

**版 本:

**--------------------------------------------------------------------------

---

******************************************************************/

  引用二:

函数开头的注释模板

/*****************************************************************

**函数名:

**输 入:

a,b,c

**  a---

**  b---

**  c---

**输 出:

x---

**   x为1,表示...

**   x为0,表示...

**功能描述:

**全局变量:

**调用模块:

**作 者:

**修 改:

**版本

****************************************************************/

  引用三:

程序中的注释模板

/*----------------------------------------------------------*/

/*注释内容           */

8程序

a.  程序编码力求简洁,结构清晰,避免太多的分支结构及太过于技巧性的程序,

尽量不采用递归模式。

b. 编写程序时,亦必须想好测试的方法,换句话说,”单元测试”的测试方案应

在程序编写时一并拟好。

c. 注释一定要与程序一致。

d. 版本封存以后的修改一定要将老语句用/**/封闭,不能自行删除或修改,并要

在文件及函数的修改记录中加以记录。

e.  程序中每个block的开头”{"

及"

}”必须对齐,嵌套的block每进一套,

缩进一个tab,TAB为4个空格,block类型包括if、for、while、do等关键字引出的。

f. 对于比较大的函数,每个block和特殊的函数调用,都必须注明其功能,举例如下

count.divisor=1193280/freq;

       // computethepropercount

OutByte((unsignedshort)67,(unsignedchar)182);

 // tell8253thata

countiscoming

OutByte((unsignedshort)66,count.c[0]);

   // sendlow-orderbyte

OutByte((unsignedshort)66,count.c[1]);

   // sendhigh-orderbyte

×

bcb,delphi中的变量命名:

 遵循匈牙利命名法,命

名必须有意义,制定如下规定

 窗体:

以大写的W开始,如About版权窗体,命名为WAbout

文件:

以大写的F开始,如About版权窗体,文件命名为FAbout.cpp

按钮(Button):

如退出按钮,命名为btnExit

 ……

 基类:

加base标记,如报表基类,窗体命名为:

WBaseRep,文件命名为FBaseRep.cpp

转贴

>

1.在.h/.cpp的开头应有一段格式统一的说明,内容包括:

a.文件名(FileName);

b.创建人(Creater);

c.文件创建时间(Date);

d.简短说明文件功能、用途(Comment)。

好习惯

2.除非极其简单,否则对函数应有注释说明。

内容包括:

功能、入口/出口参数,必

时还可有备注或补充说明。

还是好习惯

3.每列代码的长度推荐为80列,最长不得超过120列;

折行以对齐为准。

太宽了,我的限制是60列,因为文本方式下屏幕一共80列,如果你用BC这一类的编辑

器,窗口边框等又要占据一定空间,所以80列太宽

4.循环、分支代码,判断条件与执行代码不得在同一行上。

很对

5.指针的定义,*号既可以紧接类型,也可以在变量名之前。

例:

可写做:

int* pnsize;

也可写做:

int *pnsize;

但不得写做:

int * pnsize;

建议采用第二种,除非附加另外一条规定:

一次只声明一个变量,否则就会让人混淆,

比如:

int*a,b;

看起来b好像也是个指针,其实不是。

6.在类的成员函数内调用非成员函数时,在非成员函数名前必须加上"

:

"

这一条我倒觉得并不是必需的,我的看法是决不要让你的类成员函数和全局函数的名称

相同(或类似)

7.函数入口参数有缺省值时,应注释说明。

BOOLCWpsDib:

PaintDIB(CDC*pDC,CRect&

rc,

   intnBrightness,file:

//*=0*//

   BOOLbGrayScalefile:

//*=FALSE*//)

每个变量写一行,必要时加上/*in,out*/注释

8.else if必须写在一行。

应该尽量避免elseif这样的结构

9.与‘{’、‘}’有关的各项规定:

 9.1‘{’、‘}’应独占一行。

在该行内可有注释。

9.2‘{’必须另起一行,‘{’之后的代码必须缩进一个Tab。

‘{’与‘}’必须在

一列上。

9.3在循环、分支之后若只有一行代码,虽然可省略‘{’、‘}’,但不推荐这么

做。

若省略后可能引起歧义,则必须加上‘{’、‘}’。

持保留意见,因为GNU的代码规范是这样的:

if(NULL==ptr)

  {

    //dosomethinghere

  }

或者

if(NULL==ptr){

}

争论哪个更好并没有意义,关键是统一,如果用VC当然你的办法最方便,可是如果你用

emacs或者vi,就不是这样了。

10.与空格有关的各项规定。

10.1在所有两目、三目运算符的两边都必须有空格。

在单目运算符两端不必空格。

在‘—>

’、‘:

’、‘.’、‘[’、‘]’等运算符前后,及‘&

’(取地址)、‘*

’(取值)等运算符之后不得有空格。

10.2 for、while、if等关键词之后应有1个空格,再接‘(’,之后无空格;

在结

的‘)’前不得有空格。

我认为在括号两端加空格并不是什么错误,尤其是在一个条件十分复杂的if语句里

10.3调用函数、宏时,‘(’、‘)’前后不得有空格。

10.4 类型强制转换时,‘(’‘)’前后不得有空格

同上

11.与缩进有关的各项规定

11.1缩进以Tab为单位。

1个Tab为4个空格

我认为这个值应该更大,我自己使用8个空格,如果你的代码因为缩进幅度太大而导致

折行,那么几乎可以肯定你的程序设计方案有问题。

11.2下列情况,代码缩进一个Tab:

1.函数体相对函数名及'

{'

、'

}'

2.if、else、for、while、do等之后的代码。

3.一行之内写不下,折行之后的代码,应在合理的位置进行折行。

若有+-*/等

算符,则运算符应在上一行末尾,而不应在下一行的行首。

这一条我反对,运算符应该放在下一行行首,以使人能清楚的知道这一行是续上一行

的,比如

if(something

  &

&

somethingelse

otherthings)

如果写做

if(something&

  somethingelse&

  otherthings)

反而看不清楚

11.3下列情况,不必缩进:

switch之后的case、default。

编程规范与范例

1排版6

2注释11

3标识符命名18

4可读性20

5变量、结构22

6函数、过程28

7可测性36

8程序效率40

9质量保证44

10代码编辑、编译、审查50

11代码测试、维护52

12宏53

1排版

1-1:

程序块要采用缩进风格编写,缩进的空格数为4个。

说明:

对于由开发工具自动生成的代码可以有不一致。

1-2:

相对独立的程序块之间、变量说明之后必须加空行。

示例:

如下例子不符合规范。

if(!

valid_ni(ni))

{

...//programcode

repssn_ind=ssn_data[index].repssn_index;

repssn_ni=ssn_data[index].ni;

应如下书写

1-3:

较长的语句(>

80字符)要分成多行书写,长表达式要在低优先级操作符处划分新行,操作符放在新行之首,划分出的新行要进行适当的缩进,使排版整齐,语句可读。

perm_count_msg.head.len=NO7_TO_STAT_PERM_COUNT_LEN

+STAT_SIZE_PER_FRAM*sizeof(_UL);

act_task_table[frame_id*STAT_TASK_CHECK_NUMBER+index].occupied

=stat_poi[index].occupied;

act_task_table[taskno].duration_true_or_false

=SYS_get_sccp_statistic_state(stat_item);

report_or_not_flag=((taskno<

MAX_ACT_TASK_NUMBER)

&

(n7stat_stat_item_valid(stat_item))

(act_task_table[taskno].result_data!

=0));

1-4:

循环、判断等语句中若有较长的表达式或语句,则要进行适应的划分,长表达式要在低优先级操作符处划分新行,操作符放在新行之首。

if((taskno<

max_act_task_number)

(n7stat_stat_item_valid(stat_item)))

for(i=0,j=0;

(i<

BufferKeyword[word_index].word_length)

(j<

NewKeyword.word_length);

i++,j++)

first_word_length)&

second_word_length);

...//programcode

sup1;

1-5:

若函数或过程中的参数较长,则要进行适当的划分。

n7stat_str_compare((BYTE*)&

stat_object,

(BYTE*)&

(act_task_table[taskno].stat_object),

sizeof(_STAT_OBJECT));

n7stat_flash_act_duration(stat_item,frame_id*STAT_TASK_CHECK_NUMBER

+index,stat_object);

1-6:

不允许把多个短语句写在一行中,即一行只写一条语句。

rect.length=0;

rect.width=0;

rect.width=0;

1-7:

if、for、do、while、case、switch、default等语句自占一行,且if、for、do、while等语句的执行语句部分无论多少都要加括号{}。

if(pUserCR==NULL)return;

应如下书写:

if(pUserCR==NULL)

return;

1-8:

对齐只使用空格键,不使用TAB键。

以免用不同的编辑器阅读程序时,因TAB键所设置的空格数目不同而造成程序布局不整齐,不要使用BC作为编辑器合版本,因为BC会自动将8个空格变为一个TAB键,因此使用BC合入的版本大多会将缩进变乱。

1-9:

函数或过程的开始、结构的定义及循环、判断等语句中的代码都要采用缩进风格,case语句下的情况处理语句也要遵从语句缩进要求。

1-10:

程序块的分界符(如C/C++语言的大括号‘{’和‘}’)应各独占一行并且位于同一列,同时与引用它们的语句左对齐。

在函数体的开始、类的定义、结构的定义、枚举的定义以及if、for、do、while、switch、case语句中的程序都要采用如上的缩进方式。

for(...){

...//programcod

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 艺术

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1