3 命名规则

3.1 命名的基本原则

标识符的命名要清晰、明了,有明确含义,同时使用完整的单词或大家基本可以理解的缩写,避免使人产生误解——尽量采用采用英文单词或全部中文全拼表示

3.2变量名的命名规则

(1)变量的命名规则要求用“匈牙利法则”。即开头字母用变量的类型,其余部分用变量的英文意思、英文的缩写、中文全拼或中文全拼的缩写,要求单词的第一个字母应大写。

即: 变量名=变量类型+变量的英文意思(或英文缩写、中文全拼、中文全拼缩写)对非通用的变量,在定义时加入注释说明,变量定义尽量可能放在函数的开始处。见下表:

bool 用b开头 bFlg

int 用i开头 iCount

short int 用n开头 nStepCount

long int 用l开头 lSum

char  用c开头 cCount

unsigned char 用by开头

float 用f开头 fAvg

double 用d开头 dDeta

unsigned int(WORD) 用w开头 wCount

unsigned long int(DWORD) 用dw开头 dwBroad

字符串 用s开头 sFileName

用0结尾的字符串 用sz开头 szFileName

注意:对于变量命名,禁止取单个字符(如i 、j 、k...),建议除了要有具体含义外,还能表明其变量类型、数据类型等,但i、j、k作局部循环变量是允许的,也不需要加前缀标识变量类型。

(2)指针变量命名的基本原则为:

对一重指针变量的基本原则为:“p”+变量类型前缀+命名,如一个float*型应该表示为pfStat。对二重指针变量的基本规则为:“pp”+变量类型前缀+命名。对三重指针变量的基本规则为:“ppp”+变量类型前缀+命名。

(3)全局变量用g_开头,如一个全局的长型变量定义为g_lFailCount,即:变量名=g_+变量类型+变量的英文意思(或缩写)。此规则还可避免局部变量和全局变量同名而引起的问题。

(4)静态变量用s_开头,如一个静态的指针变量定义为s_plPerv_Inst,即: 变量名=s_+变量类型+变量的英文意思(或缩写)

(5)对枚举类型(enum)中的变量,要求用枚举变量或其缩写做前缀。并且要求用大写。如:

enum cmEMDAYS

{

EMDAYS_MONDAY;

EMDAYS_TUESDAY;

……

};

(6)对struct、union变量的命名要求定义的类型用大写。并要加上前缀,其内部变量的命名规则与变量命名规则一致。结构一般用S开头,如:

struct ScmNPoint

{

int nX;//点的X位置

int nY; //点的Y位置

};

联合体一般用U开头,如:

union UcmLPoint

{

LONG lX;

LONG lY;

}

(7)对常量(包括错误的编码)命名,要求常量名用大写,常量名用英文表达其意思。当需要由多个单词表示时,单词与单词之间必须采用连字符“_”连接。

如:#define CM_FILE_NOT_FOUND CMMAKEHR(0X20B) 其中CM表示类别。

(8)对const 的变量要求在变量的命名规则前加入c_,即:c_+变量命名规则;示例:

const char* c_szFileName;

3.4 函数的命名规范

(1)函数的命名应该尽量用英文(或英文缩写、中文全拼、中文全拼缩写)表达出函数完成的功能——函数名应准确描述函数的功能。遵循动宾结构的命名法则,函数名中动词在前,并在命名前加入函数的前缀,函数名的长度不得少于8个字母。函数名首字大写,若包含有两个单词的每个单词首字母大写。如果是OOP 方法,可以只有动词(名词是对象本身)。示例:

LONG GetDeviceCount(……);

void print_record( unsigned int rec_ind ) ;

int  input_record( void ) ;

unsigned char get_current_color( void ) ;

(2)避免使用无意义或含义不清的动词为函数命名。如使用process、handle等为函数命名,因为这些动词并没有说明要具体做什么。

(3)必须使用函数原型声明。函数原型声明包括:引用外来函数及内部函数,外部引用必须在右侧注明函数来源: 模块名及文件名;内部函数,只要注释其定义文件名——和调用者在同一文件中(简单程序)时不需要注释。

应确保每个函数声明中的参数的名称、类型和定义中的名称、类型一致。

3.5 函数参数命名规范

(1)参数名称的命名参照变量命名规范。

(2)为了提高程序的运行效率,减少参数占用的堆栈,传递大结构的参数,一律采用指针或引用方式传递。

(3)为了便于其他程序员识别某个指针参数是入口参数还是出口参数,同时便于编译器检查错误,应该在入口参数前加入const标志。如:

……cmCopyString(const CHAR * c_szSource, CHAR * szDest)

c语言程序的基本规范是什么,C语言编程规范——3 命名规则相关推荐

  1. DSB算法C语言程序,单片机中使用DSB温度传感器C语言程序.doc

    单片机中使用DSB温度传感器C语言程序 单片机中使用DS18B20温度传感器C语言程序(参考1) /************************************************** ...

  2. c语言程序女设计教学效果分析,C语言程序设计的教学论文

    C语言程序设计的教学论文 1C语言程序设计教学方法研究 1.1理论教学 对于大多数课程而言,从宏观上将课程知识点及其关联讲授给学生非常必要,这便于学生更加系统深刻地理解所学内容.作为教材讲解C语言程序 ...

  3. c语言程序代码有什么用,用c语言编写的代码程序是什么?

    前言继承是OOP设计中的重要概念.在C++语言中,派生类继承基类有三种继承方式:私有继承(private).保护继承(protected)和公有继承(public).一.继承规则继承是C++中的重要特 ...

  4. 简述python程序的书写规范_简明的 Python 编程规范

    简明的 Python 编程规范 使用编码规范编写程序,不仅可以别人让后面维护的人更方便,同时也方便自己检查程序.以下是百分网小编精心为大家整理的简明的 Python 编程规范,希望对大家编写程序有所帮 ...

  5. c语言程序和数据是可执行,C语言学习笔记(C编程-Tan Haoqiang)

    计算机程序: 计算机可以识别和执行的一组指令. 计算机的每项操作均按照说明进行谭浩强c语言程序设计课件f,计算机的所有操作均由程序控制. 计算机指令: 指导机器工作的指令和命令. The 指令包含一个 ...

  6. 华为python语言通用编程规范 模块导入顺序_Python编程规范

    1,Python编程规范 > 编码 所有的 Python 脚本文件都应在文件头标上 #-*- coding:utf-8 -*- 用于设置编辑器,默认保存为 utf-8 格式. > 注释 业 ...

  7. c语言程序执行时无法输入字符串,C语言程序设计中键盘输入数据的方法分析

    1. 引言 C语言程序设计是一门实践性很强的语言课程,在程序设计过程中经常需要从键盘输入所需要的数据.C语言没有专门的输入语句,可以调用C语言编译系统提供的函数库中的库函数来实现.有些程序虽然调试成功 ...

  8. c语言程序竞赛,2015年江西理工大学C语言程序设计竞赛(初级组)

    JankTao相亲记 解法:排序 #include #include #include #include #include #include #include #include using names ...

  9. c语言程序课程设计问题,矩形问题-C语言程序课程设课程设计(论文).doc

    矩形问题-C语言程序课程设课程设计(论文) PAGE PAGE \* MERGEFORMAT 20课程设计(论文)题 目 名 称 矩形问题 课 程 名 称 C语言程序课程设计 学 生 姓 名 xxx ...

  10. c语言程序题是如何判分的,C语言编程题判分系统的研究与实现

    摘要: 随着计算机技术和因特网的发展,B/S模式的教学系统在高校教学中显得越来越重要.C语言程序设计是计算机专业的一门重要的基础课程,具有实践性强的特点,在教学中应加大实践教学比例.本文利用网络技术开 ...

最新文章

  1. FlashInspector 【Firefox浏览器插件,flash分析工具】
  2. CSDN markdown中实现首行缩进(空格)的两种方法(“  ”)
  3. C++ Opengl纹理贴图源码
  4. Nemuria UML架构图 第3次迭代. 重构
  5. 从实践的角度来回顾一下SQL注入
  6. (01)System Verilog 程序数据采集
  7. C语言学习笔记----sizeof()的使用
  8. 用Windows Live Writer在博客园发布Post
  9. 什么叫ServletContext对象?
  10. JQuery 绑定事件
  11. Android简易实战教程--第十四话《模仿金山助手创建桌面Widget小部件》
  12. android手机向电脑传输文件,手机怎么用数据线连接电脑传输文件
  13. GPU服务器与CPU服务器的区别,如何选择GPU服务器
  14. 长沙小吃比较好吃and著名的地方
  15. Java中基本数据类型和包装类型的区别
  16. expect 中的回车和换行
  17. 防火墙Deny记录实时检测
  18. 南邮 OJ 1652 翻转棋
  19. c语言空循环的作用是什么意思,C语言空循环和无穷循环有的区别
  20. 综述:目标检测2001-2021

热门文章

  1. 【kafka】kafka Offset commit failed on partition The coordinator is not aware of this member
  2. Spring : spring-jcl-5.1.2.RELEASE.jar日志包
  3. git : 上传大文件或者PDF或者二进制文件导致无法上传
  4. signature=de15a75f36f4ab4d3249c21fbaa05791,1-out-of-n Signatures from a Variety of Keys
  5. android flutter mac,android flutter mac 开发环境变量配置
  6. Elasticsearch 写入优化记录,从3000到8000/s
  7. 取代Swagger + Postman ,Apifox 功能更强大!
  8. 什么?你还不知道IDEA Debug界面的按钮都是干啥用的?快进来补补课~
  9. 面试经常被问到这 4 大开源框架,必须得好好研究一下了!
  10. 感觉Swagger功能不够强大?knife4j这款神器了解一下....