C++代码规范之命名

一、命名的两个基本原则

1、含义清晰,不易混淆;

2、不和其它模块、系统API的命名空间相冲突。

二、命名通则

1、在所有命名中,都应使用标准的英文单词或缩写;不得使用拼音或拼音缩写,除非该名字描述的是文

特有的内容(如半角、全角、声母、韵母等);除非必要,不要用数字或较奇怪的字符来定义标识符。

2、所有命名都应遵循达意原则,即名称应含义清晰、明确。

3、所有命名都不易过长,应控制在规定的最大长度以内。

4、所有命名都应尽量使用全称。

5、命名中若使用特殊约定或缩写,则要有注释说明。

6、自己特有的命名风格,要自始至终保持一致,不可来回变化。

   说明:个人的命名风格,在符合所在项目组或产品组的命名规则的前提下,才可使用。(即命名规则中没有规定到的地方才可有个人命名风格)。

7、在同一软件产品内,应规划好接口部分标识符(变量、结构、函数及常量)的命名,防止编译、链接时产生冲突。

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

   说明:变量,尤其是局部变量,如果用单个字符表示,很容易敲错(如i写成j),而编译时又检查不出来,有可能为了这个小小的错误而花费大量的查错时间。

例:下面所示的局部变量名的定义方法可以借鉴。

int liv_Width

其变量名解释如下:

l      局部变量(Local)  (其它:g    全局变量(Global)...)

i      数据类型(Interger)

v      变量(Variable)   (其它:c    常量(Const)...)

Width  变量含义

这样可以防止局部变量与全局变量重名。

9、命名规范必须与所使用的系统风格保持一致,并在同一项目中统一,比如采用UNIX的全小写加下划线的风格或大小写混排的方式,不要使用大小写与下划线混排的             方式,用作特殊标识如标识成员变量或全局变量的m_和g_,其后加上大小写混排的方式是允许的。

例: Add_User不允许,add_user、AddUser、m_AddUser允许。

10、用正确的反义词组命名具有互斥意义的变量或相反动作的函数等。

说明:下面是一些在软件中常用的反义词组。

add / remove      begin / end      create / destroy        insert / delete

first / last      get / release    increment / decrement   put / get

add / delete      lock / unlock    open / close            min / max

old / new         start / stop     next / previous         source / target

show / hide       send / receive   up / down    cut / paste

例:

int  min_sum;

int  max_sum;

int  add_user( BYTE *user_name );

int  delete_user( BYTE *user_name );

11、除了编译开关/头文件等特殊应用,应避免使用_EXAMPLE_TEST_之类以下划线开始和结尾的定义。

12、程序中不要出现标识符完全相同的局部变量和全局变量,尽管两者的作用域不同而不会发生语法错误,但会使人误解。

三、具体规范

1、工程名

不强制统一。

2、文件名:

基于工程名,开头3个字母应表明与哪一个工程相关。

后面的字母应能够区别不同的功能。

不区分大小写。

长度不限于8.3格式,建议不多于30个字符。

若文件用于定义和实现类,建议文件名与类名保持一致。

3、函数名:

参照 Windows API 的命名规范。

推荐使用动宾结构。函数名应清晰反映函数的功能、用途。

函数名最长不得超过30个字符。

函数名第一个字母必须大写。

全局函数必须以小写前缀"g"开头。全局函数的名字应当使用“动词”或者“动词+名词”(动宾词组)。类的成员函数应当只使用“动词”,被省略掉的名词就是对象    本身。

  例:

DrawBox(); // 全局函数
                 box->Draw(); // 类的成员函数

4、变量名:

原则上,变量名的命名遵从匈牙利记法。即:前缀 + 类型 + 变量名

变量名最长不得超过20个字符。

变量的名字应当使用“名词”或者“形容词+名词”。

  例:

float value;
              float oldValue;

     1)格式:[m_|s_|g_] type [class name|struct name] variable name

2)解释:

m_ : 类的成员变量

ms_:类的静态成员变量

s_ :静态全局变量

g_ :普通全局变量

类型缩写(type)

char, TCHAR: ch

char[],TCHAR[]: sz

bool, BOOL: b

int, __int16,__int32,__int64: n

long: l

double: d

float: ft

BYTE: by

WORD: w

DWORD: dw

unsigned: u

function: fn

p :pointer

lp :pointer

5、类名:

必须以大写"K"开头,后面字母反映具体含义,以清晰表达类的用途和功能为原则。

接口必须以大写"I"开头,代表 Interface 。

当名称由多个单词构成时,每一个单词的第一个字母必须大写。

6、结构名、宏名、枚举名、联合名:

全部大写。

枚举名加小写前缀"enum"。

例:

typedef enum _KFILE_OPEN_MODE

{

enumOPEN_READONLY = 0;

enumOPEN_READWRITE = 1;

enumCREATE_ALWAY = 3 ;

} KFILE_OPEN_MODE;

宏名加小写前缀"def"。

例:

#define defMAXNUMBER 100

结构名加小写前缀"tag",之后必须以大写"K"开头。

例:

typedef struct tagKPOINT

{

int x;

int y;

} KPOINT;

联合名加小写前缀"uni"。

例:

typedef union _VARIANT

{

char unichVal;

int uninVal;

long unilVal;

float uniftVal;

} VARIANT;

说明:对接口部分的标识符应该有更严格限制,防止冲突。如可规定接口部分的变量与常量之前加上  “模块”标识等。

说明:应该在源文件的开始之处,对文件中所使用的缩写或约定,特别是特殊的缩写,进行必要的注释说明。

说明:较短的单词可通过去掉“元音”形成缩写;较长的单词可取单词的头几个字母形成缩写。

一些单词有大家公认的缩写。

例:temp 可缩写为 tmp

flag 可缩写为 flg

statistic 可缩写为 stat

increment 可缩写为 inc

message 可缩写为 msg

C++代码规范之命名的更多相关文章

  1. iOS代码规范之命名规范

    技术博客http://www.cnblogs.com/ChenYilong/    新浪微博http://weibo.com/luohanchenyilong   命名规范类命名    首字母大写,之 ...

  2. python基础(代码规范、命名规范、代码缩进、注释)

    代码规范 PEP8(python增强建议书第8版) 每个import语句只导入一个模块 不要在行尾添加分号";" 建议每行不超过80个字符   超出部分可以用()来进行换行例如: ...

  3. python代码规范和命名规范

    一.简明概述 1.编码 如无特殊情况, 文件一律使用 UTF-8 编码 如无特殊情况, 文件头部必须加入#-*-coding:utf-8-*-标识 2.代码格式 2.1.缩进 统一使用 4 个空格进行 ...

  4. Python代码规范与命名规则

    1.模块 模块尽量使用小写命名,首字母保持小写,尽量不要用下划线(除非多个单词,且数量不多的情况) # 正确的模块名 import decoder import html_parser # 不推荐的模 ...

  5. Android开发代码规范(转)

    Android开发代码规范 1.命名基本原则    在面向对象编程中,对于类,对象,方法,变量等方面的命名是非常有技巧的.比如,大小写的区分,使用不同字母开头等等.但究其本,追其源,在为一个资源其名称 ...

  6. iOS代码规范(OC和Swift)

    下面说下iOS的代码规范问题,如果大家觉得还不错,可以直接用到项目中,有不同意见 可以在下面讨论下. 相信很多人工作中最烦的就是代码不规范,命名不规范,曾经见过一个VC里有3个按钮被命名为button ...

  7. 谈谈PHP代码规范

    [转] http://www.syyong.com/php/Talk-about-PHP-code-specification.html 我向往这样一个php世界,里面没有代码规范之争.你我都一样,都 ...

  8. 转!!Java代码规范、格式化和checkstyle检查配置文档

    为便于规范各位开发人员代码.提高代码质量,研发中心需要启动代码评审机制.为了加快代码评审的速度,减少不必要的时间,可以加入一些代码评审的静态检查工具,另外需要为研发中心配置统一的编码模板和代码格式化模 ...

  9. C#代码规范

    C#代码规范  一.文件命名 1 文件名 文件名统一使用帕斯卡命名法,以C#类名命名,拓展名小写. 示例: GameManager.cs 2 文件注释 每个文件头须包含注释说明,文件头位置指的是文件最 ...

随机推荐

  1. 重置input checked

    <!-- 作者:duke 时间:2018-10-24 描述: 重置input 样式--> <!DOCTYPE HTML><html> <head> &l ...

  2. Flask-WTF表单

    Web表单 Web 表单是 Web 应用程序的基本功能. 它是HTML页面中负责数据采集的部件.表单有三个部分组成:表单标签.表单域.表单按钮.表单允许用户输入数据,负责HTML页面数据采集,通过表单 ...

  3. PostgreSQL日志号LSN和wal日志文件简记

    弄明白日志号的原理之后,一段时间又有点忘记了,干脆整理一遍: (一)wal文件命名规则 1)在$PGDATA目录下面的pg_xlog目录中存放着xlog日志文件(10.1之后变为了pg_wal): t ...

  4. 给SqlParameter参数指定或不指定:@变量标识符的区别是什么?

    对于sql语句中一个@的参数@au_id,在sqlParameter中,可以用@au_id,也可以用au_id. 要是bt点的,用两个@,你就不能随便省略@了. 对于sql语句 : select *  ...

  5. Linux:vim环境设置

    vim环境设置 vim的环境设置在/etc/vimrc的这个文件中,不过不建议直接修改该配置文件.但是可以修改~/.vimrc文件,默认是不存在的,要手动创建并写入设置值. set hlsearch ...

  6. Linux:paste命令详解

    paste 直接将两行贴在一起,且中间以[TAB]键隔开 语法 paste(选项)(file1 file2) 选项 -d<间隔字符>或--delimiters=<间隔字符>:用 ...

  7. Windows7下PHP 7.1搭建开发环境

    引言: PHP天生就是用来解决互联网时代的Web语言问题的专业工具,本文将记录在windows上搭建PHP的过程以及其中碰到的问题. 配置版本信息 OS: Windows 7 PHP: 7.1.7-n ...

  8. Ubuntu网络代理问题

    问题描述 新开机的电脑,不开lantern就上不了网.很气. 解决过程 首先当然是寻求解决方案了.未果 然后就是妥协,每次先开一次lantern.(其实也不是很麻烦是吧,哎,是的是的) 今天早晨友人来 ...

  9. nginx在使用proxy_pass的情况下开启error_page

    error_page用于指定特定错误发生时要显示的url,但是如果请求经proxy_pass处理后,如何使error_page对upstream产生的错误进行处理呢? 方法很简单. 保持之前的erro ...

  10. ranch分析学习(一)

    Ranch 是一个tcp处理的程序框架.官方的解释  Ranch is a socket acceptor pool for TCP protocols. 主要目的是提供一个方便,易用,高效,稳定的t ...