-
C++类、结构体、函数、变量等命名规则详解
2018-10-17 21:34:26编程越学越深,也慢慢了解到命名规范的重要性,在前面几个数据结构的示例中,大家也看到,命名也是有一定的规则的,这会方便...1、驼峰命名法 2、帕斯卡(Pascal)命名法 3、匈牙利命名法 4、下划线命名法 三...编程越学越深,也慢慢了解到命名规范的重要性,在前面几个数据结构的示例中,大家也看到,命名也是有一定的规则的,这会方便我们阅读代码,方便我们后期完善。今天就给大家总结一下常用的C++命名规则。希望对大家有所帮助。
目录
一、命名规范原则
1、必循遵守的规则
首先是总体的命名规范原则,是我们命名时必须要遵守的,不然程序会出现错误。
1、变量名只能是字母(A-Z,a-z)、数字(0-9)或下划线。
2、第一个字母不能是数字,例如 2L 这不是一个合法的C++变量。
3、不能是c++关键字,例如不能用 class 、 int 这些单词来命名一个变量。
常用C++关键字如下,不必死记硬背,多些代码,慢慢就熟练了。
asm
do
if
return
typedef
auto
double
inline
short
typeid
bool
dynamic_cast
int
signed
typename
break
else
long
sizeof
union
case
enum
mutable
static
unsigned
catch
explicit
namespace
static_cast
using
char
export
new
struct
virtual
class
extern
operator
switch
void
const
false
private
template
volatile
const_cast
float
protected
this
wchar_t
continue
for
public
throw
while
default
friend
register
true
delete
goto
reinterpret_cast
try
有些是我们不常见的,如果不确定是不是,第一种方式是命名的时候,看一下,以VS2015为例,如果我们定义这个变量有特殊颜色,比如蓝色
说明这是关键字,当然像我们自己定义的有时候也会变色,具体的就看编译器怎么设置的了。第二种方式就是先命名,如果报错,说明这个命名是用了关键字。
第三种就是尽量避免不确定的,实在不行用大写,C++目前的关键字均为小写。
4、区分大小写,例如iA和ia是两个不同的变量。
2、尽量做到的规则
不遵守不会错,但是命名不是很规范。所以这块没有标准,只是我自己看的很多代码,很多书上讲的,然后自己总结。
1、尽量用英文,不用拼音。
2、尽量用少的单词表达多的意思。虽然长度没有硬性要求,但是如果一个变量十多个字母还是不好看。有的书上说20字母以内,有个书上说尽量不超过30个字母,个人建议,控制在15个以内,如果英语不太好,大家可以通过变量命名多接触英语单词,如果英语水平较高,建议控制在10个以内。
3、有含义的变量或者多处调用的变量,尽量用有含义的单词命名,不要用i,j,k这些单个字母命名。要不然别人看你的代码,很难理解变量含义,还容易出错。
4、定义变量时,可以加上类型前缀。比如链表变量前面加上L,类前面加上C。
LinkList LL ;//第一个L的含义是链表,作为前缀,第二个L的含义是变量名称 class CPerson ;//第一个C的含义是类,作为前缀,后面Person的含义是变量名称
5、同一个程序中,相同类型用同一种命名方法。例如变量用驼峰命名法,那所有的变量都用驼峰命名,类名都要求首字母大写,那所有的类名首字母都大写。
二、常用命名法
1、驼峰命名法
指混合使用大小写字母来构成变量和函数的名字。当变量名或函数名是由一个或多个单词连结在一起构成的唯一识别字时,第一个单词以小写字母开始,从第二个单词开始以后的每个单词的首字母都采用大写字母,例如:myName、myAge,这样的变量名看上去就像骆驼峰一样此起彼伏,因此被称为驼峰命名法。
int *treeBase; int elemNum; int treeSize;
2、帕斯卡(Pascal)命名法
也叫大驼峰法,与驼峰命名法类似,不过骆驼命名法是首字母小写,而帕斯卡命名法是首字母大写。
int *TreeBase; int ElemNum; int TreeSize;
3、匈牙利命名法
匈牙利命名法是由一位能干的 Microsoft 程序员查尔斯- 西蒙尼(Charles Simonyi) 提出的。它通过在变量名前面加上相应的小写字母的符号标识作为前缀,标识出变量的作用域,类型等这些符号可以多个同时使用,基本原则是:变量名=属性+类型+对象描述。
匈牙利命名法关键是:标识符的名字以一个或者多个小写字母开头作为前缀;前缀之后的是首字母大写的一个单词或多个单词组合,该单词要指明变量的用途。
int *iTreeBase; int iElemNum; int iTreeSize;
4、下划线命名法
与驼峰命名法相似,通过一种方式将不同单词区分开,方便读懂变量含义。与驼峰命名法不同的是,驼峰命名法采用的是首字母大写区分,下划线命名法是在不同单词之间添加下划线。
int *tree_base; int elem_num; int tree_size;
三、不同类型常用命名规则
对于C++固有类型,如类,函数,他们有各自的命名规则,当然不同公司有不同公司的命名要求,在这里说一下大多数要求,大家作为了解。
1、类与对象
类的名称一般以大写字母“C”开头,表明定义的是类,后跟一个或多个单词。为便于界定,每个单词的首字母要大写。类的命名推荐用"名词"或"形容词+名词"的形式。
class CPerson; class CLittleCat;
2、函数
函数的名称由一个或多个单词组成。为便于界定,建议采用帕斯卡(Pascal)命名法,即每个单词的首字母要大写。
int InitQueue(LinkQueue &LQ) ; int EnQueue(LinkQueue &LQ, int e); int DeQueue(LinkQueue &LQ, int &e);
3、变量
变量一般采用驼峰命名法,个人也比较喜欢驼峰命名法。
4、常量、宏定义和枚举
常量、宏定义和枚举一般都是所有字母大写,特别是宏定义,在不同字母之间,可以加上下划线,也可以不加。
#define List_INIT_SIZE 100 #define LISTINCREMENT 10 #define TRUE 1 #define FALSE 0 #define OK 1 #define ERROR 0 #define OVERFLOW -1 int LENGTH = 10; int LIST_MAX_SIZE = 50;
-
C 编程规范(变量,结构体,typedef,函数,枚举,宏的命名)
2019-07-21 18:27:221、命名约定 1.1 通用命名规则 函数命名,变量命名,文件命名要有描述性,少用缩写。...驼峰命名法 首字母小写,函数名中的每个逻辑断点都用大写字母来标记示例:myData 2 帕斯卡(Pascal)命名法 与...文章目录
1、命名约定
1.1 通用 命名规则
函数命名
,变量命名
,文件命名
要有描述性
,少用缩写。
注意,一些特定
的广为人知
的缩写
是允许的,例如用i
表示迭代变量
(iteration)和用T
表示模板参数
(template)。目前主要有 4种命名风格:
序号 类型 描述 1 驼峰 命名法 首字母小写,每个逻辑断点都用大写字母来标记
一般用于全局变量
,函数
、结构体变量
、对象名
示例:myData2 帕斯卡(Pascal)命名法 与驼峰命名法类似,只是 首字母大写
一般用于结构名
、类名
示例:MyData3 下划线 命名法 函数名中的每个逻辑断点都用 下划线 _
分割C程序
和UNIX
这样的环境中,它的使用非常普遍
一般用于函数
、变量
示例:my_data4 匈牙利 命名法 变量名前面加上相应的小写字母的符号标识作为前缀,标识出变量的作用域、类型等
示例:i_MyData
1.2 文件名 命名规则
文件名
要全部小写
,可以包含下划线 _
或连字符 -
,,依照项目的约定。如果没有约定。那么下划线 _
更好。
例如:my_useful_class.c
1.3 变量 命名规则
变量(包括
函数参数
) 和数据成员名
一律小写,单词之间用下划线 _
连接。
类
的成员变量
以下划线结尾,但结构体
的就不用。序号 类别 举例 1 局部 变量
,函数参数
local_variable
2 结构体
内的变量
struct_data_member
3 类
的成员变量
class_data_member_
1.4 类型 命名规则
所有类型命名:
类
,结构体
,类型定义
(typedef
),枚举
,类型模板参数
,均使用相同约定,即以大写字母开始
,每个单词首字母均大写,不包含下划线(帕斯卡
命名法)。例如:class BookCartoon { string title_; string author_; }; struct BookCartoon { char title[40]; char author[40]; }; typedef struct { char title[40]; char author[40]; } BookCartoon; enum ButtonState { SHORT_PRESS, /* 短按 */ LONG_PRESS, /* 长按 */ }; typedef enum { SHORT_PRESS, /* 短按 */ LONG_PRESS, /* 长按 */ } ButtonState;
类型 变量 采用
驼峰
命名:序号 类别 举例 1 结构体
变量bookCartoon
2 对象名 bookCartoon
3 枚举
变量buttonState
1.5 函数 命名规则
一般来说,
函数名
的每个单词首字母大写
,没有下划线。
对于首字母缩写的单词,更倾向于将它们视作一个单词进行首字母大写。序号 方式 描述 1 驼峰 命名法 myFunctio()
,deleteUrl()
2 下划线 命名法 my_function()
3 帕斯卡(Pascal)命名法 MyFunction()
,DeleteUrl()
1.6 枚举 命名规则
枚举的命名应当和
常量
或宏
一致:kEnumName
或是ENUM_NAME
。typedef enum { BS_SHORT_PRESS, /* 短按 */ BS_LONG_PRESS, /* 长按 */ } ButtonState;
1.7 宏 的命名规则
命名
全部大写
,使用下划线 _
连接。#define SECONDS_PER_YEAR (60 * 60 * 24 * 365)UL
2、函数
序号 描述 1 一个函数 仅完成 一件功能 2 重复代码 应该尽可能提炼成 函数 3 避免函数的代码块 嵌套
过深4 对函数的 错误返回码
要全面处理
5 在源文件范围内 声明
和定义
的所有函数,除非外部可见,否则应该增加static
关键字
3、质量保证
序号 原则 描述 1 正确性 程序要实现设计 要求的功能
2 简洁性 程序 易于理解
并且易于实现
3 可靠性 程序在给定时间间隔和环境条件下,按设计要求成功运行程序的概率 4 可维护性 程序被修改的能力,包括 纠错
、改进
、新需求
或功能规格变化
的适应能力5 代码 可测试性 软件 发现故障并隔离
、定位故障
的能力,以及在一定的时间和成本前提下,进行测试设计
、测试执行
的能力6 代码 性能高效 尽可能少地占用 系统资源
,包括内存和执行时间7 可移植性 为了在原来设计的特定环境之外运行,对系统进行修改的能力
4、程序效率
在保证软件系统的 正确性、简洁、可维护性、可靠性 及 可测性的前提下,提高代码效率。
5、注释
优秀的代码 不写注释也可轻易读懂,注释无法把糟糕的代码变好,需要很多注释来解释的代码往往存在坏味道,需要
重构
。
命名的 常用缩写
Primitive(原语) 缩写 翻译 receive
recv
接收 send
send
发送 argument
arg
- buffer
buf
- command
cmd
- compare
cmp
- config
cfg
- device
dev
- error
err
- hexadecimal
hex
- initialize
init
- maximum
max
- minimum
min
- message
msg
- parameter
param
- previous
prev
- register
reg
- synchronize
sync
- temp
tmp
- -
Xorm——定义表结构体
2020-02-14 10:16:51名称映射规则 名称映射规则主要负责结构体名称到表名和结构体field到表字段的名称映射。...SnakeMapper支持struct为驼峰式命名,表结构为下划线命名之间的转换;SameMapper支持结构体名称和对应的...名称映射规则
名称映射规则主要负责结构体名称到表名和结构体field到表字段的名称映射。由core.IMapper接口的实现者来管理,xorm内置了三种IMapper实现:core.SnakeMapper , core.SameMapper和core.GonicMapper。SnakeMapper支持struct为驼峰式命名,表结构为下划线命名之间的转换;SameMapper支持结构体名称和对应的表名称以及结构体field名称与对应的表字段名称相同的命名。
当前SnakeMapper为默认值,如果需要改变时,在engine创建完成后使用
engine.SetMapper(core.SameMapper{})
使用Table和Tag改变名称映射
- 如果结构体拥有
TableName() string
的成员方法,那么此方法的返回值即是该结构体对应的数据库表名。 - 通过
engine.Table()
方法可以改变struct对应的数据库表的名称,通过sturct
中field
对应的Tag
中使用xorm:"'column_name'"
可以使该field对应的Column
名称为指定名称。这里使用两个单引号将Column
名称括起来是为了防止名称冲突,因为我们在Tag中还可以对这个Column
进行更多的定义。如果名称不冲突的情况,单引号也可以不使用。
到此名称映射的所有方法都给出了,一共三种方式,这三种是有优先级顺序的。表名的优先级顺序如下:
engine.Table()
指定的临时表名优先级最高TableName() string
其次Mapper
自动映射的表名优先级最后
字段名的优先级顺序如下:
- 结构体
tag
指定的字段名优先级较高 Mapper
自动映射的表名优先级较低
Column属性定义
我们在field对应的Tag中对Column的一些属性进行定义,定义的方法基本和我们写SQL定义表结构类似,比如:
type User struct { Id int64 Name string `xorm:"varchar(25) notnull unique 'usr_name'"` }
具体的Tag规则如下,另Tag中的关键字均不区分大小写,但字段名根据不同的数据库是区分大小写:
tag 说明 name 当前field对应的字段的名称,可选,如不写,则自动根据field名字和转换规则命名,如与其它关键字冲突,请使用单引号括起来。 pk 是否是Primary Key,如果在一个struct中有多个字段都使用了此标记,则这多个字段构成了复合主键,单主键当前支持int32,int,int64,uint32,uint,uint64,string这7种Go的数据类型,复合主键支持这7种Go的数据类型的组合。 autoincr 是否是自增 [not ]null 或 notnull 是否可以为空 unique或unique(uniquename) 是否是唯一,如不加括号则该字段不允许重复;如加上括号,则括号中为联合唯一索引的名字,此时如果有另外一个或多个字段和本unique的uniquename相同,则这些uniquename相同的字段组成联合唯一索引 index或index(indexname) 是否是索引,如不加括号则该字段自身为索引,如加上括号,则括号中为联合索引的名字,此时如果有另外一个或多个字段和本index的indexname相同,则这些indexname相同的字段组成联合索引 created 这个Field将在Insert时自动赋值为当前时间 updated 这个Field将在Insert或Update时自动赋值为当前时间 deleted 这个Field将在Delete时设置为当前时间,并且当前记录不删除 - 这个Field将不进行字段映射 另外有如下几条自动映射的规则:
- 1.如果
field
名称为Id
而且类型为int64
并且没有定义tag
,则会被xorm
视为主键,并且拥有自增属性。如果想用Id
以外的名字或非int64
类型做为主键名,必须在对应的Tag
上加上xorm:"pk"
来定义主键,加上xorm:"autoincr"
作为自增。这里需要注意的是,有些数据库并不允许非主键的自增属性。 - 2.
string
类型默认映射为varchar(255)
,如果需要不同的定义,可以在tag中自定义,如:varchar(1024)
https://www.kancloud.cn/kancloud/xorm-manual-zh-cn/56004
- 如果结构体拥有
-
c语言基础-结构体
2015-01-21 20:57:21结构体也是一种数据类型 (这种数据类型里面可以定义不同的数据类型的数据,是一种用户自定义的数据类型) ...//注意 结构体的命名用驼峰法 每一个成员变量后面要加上; 在最后的{}后面要加上; 结构体变量的结构体也是一种数据类型 (这种数据类型里面可以定义不同的数据类型的数据,是一种用户自定义的数据类型)
当然结构体里面可以嵌套数组和结构体
结构体的定义
struct 结构体名
{
成员变量的数据类型1 成员变量名1;
成员变量的数据类型2 成员变量名2;
.......
};
//注意 结构体的命名用驼峰法 每一个成员变量后面要加上; 在最后的{}后面要加上;
结构体变量的定义
struct 结构体名 结构体变量名 = {值1, 值2, 值3, 值4};
结构体的使用:使用点语法来访问成员变量 结构体变量名 . 成员变量名;
结构体可以直接赋值 数组不能直接赋值
类型重命名
typedef 原类型名 新类型名;
注意:新类型名使用的命名规范为大驼峰法
typedef struct student Student;
struct abc {
char a;
char d;
short b;
int c;
};
//结构体的内存是最大成员变量数据类型所占的字节数的倍数
//结构体成员变量的顺序, 会影响到结构体所占的字节数
//合理的排布成员变量的顺序, 能够减少内存碎片, 降低结构体所占的字节数
//把short b放到第二个位置的话, 所占字节数则是12, 以前两个所占字节平分单元 -
xorm结构体映射规则和表操作
2020-07-03 10:30:30上节内容我们学习了基本的xorm框架的知识和基础配置的相关信息。本节课内容我们继续学习相关的知识和相关操作。...SnakeMapper:支持struct为驼峰式命名,表结构中为下划线命名之间的转换。该种规则为xorm -
C#学习笔记_12_枚举&结构体
2019-02-11 21:01:00枚举名遵循大驼峰命名法 枚举一般情况下是和switch case结合使用的 注意: 1、虽然枚举中的元素的值可以相同,但是强烈不推荐这样使用 2、枚举元素默认的值类型是int型,可以修改为其他的整型 ... -
Go语言有初级教程吗?xorm结构体映射规则和表操作
2020-07-16 14:10:03上节内容我们学习了基本的xorm框架的知识和基础配置的相关信息。本节课内容我们继续学习相关的知识和相关操作。...SnakeMapper:支持struct为驼峰式命名,表结构中为下划线命名之间的转换。该种规则为xorm -
Swift命名规范
2017-09-21 05:49:50在Swift中自定义名字的时候,通常是采用驼峰命名法,也就是混合大小写字母来命名。驼峰命名法又分为小驼峰和大驼峰。小驼峰第一个单词要小写,后面的单词首字母大写,比如说myIntArray;大驼峰所有单词首字母都大写... -
java 结构体转json_struct,map,json 互相转换
2021-02-28 16:40:12结构体内需要序列化的字段首字母大写(遵循驼峰式命名),不需要序列化的字段小写无所谓了Username string `json:"username"` 将会使用username做json key值2.如果需要序列化后的json key格式小写,需要加上json标签`... -
【编码规范】命名规则
2019-09-27 10:38:55一般函数,类名,结构体名称,枚举名称采用大驼峰(帕斯卡尔)命名法。 取值、设置函数,一般变量,采用下划线法。...常量采用k+大驼峰命名法。 类数据成员采用下划线命名法,不过结尾要加上下划线。 ... -
golang命名规范
2018-08-23 09:35:55golang的变量函数命名需要使用驼峰命名法,且不能出现下划线, 文件名使用下划线 golang中根据首字母的大小写来确定可以访问的权限。无论是方法名、常量、变量名还是结构体的名称,如果首字母大写,则可以被其他的包... -
Golang命名规范和开发规范
2018-12-12 18:59:00目录 命名 文件命名 package 变量 常量 接口 结构体 方法 注释 README 命名 文件命名 文件命名一律采用小写,不用驼峰式,尽量... -
关于命名规则
2020-09-07 17:07:53关于命名规则 宏定义全部用大写字母 变量用驼峰法//小驼峰法,首字母小写 其它用pascal//大驼峰法,首字母大写//包括结构体变量名 -
golang语言命名访问权限问题
2019-07-19 11:57:261、golang的命名需要使用驼峰命名法,且不能出现下划线 2、golang中根据首字母的大小写来确定可以访问的权限。无论是方法名、常量、变量名还是结构体的名称,如果首字母大写,则可以被其他的包访问;如果首字母小写... -
代码命名风格参考
2021-03-19 00:43:26大驼峰,并以T开头,例如TMsg,结构体里面统一采用基本数据类型 公共成员函数: 大驼峰,例如Open,Close 内部成员函数: 小驼峰,例如open,openFile 变量: 匈牙利命名法,如果是成员变量则在前面添加m_,如果是... -
golang的命名规范及大小写的访问权限
2017-01-10 18:00:431、golang的命名推荐使用驼峰命名法,必须以一个字母(Unicode字母)或下划线开头,后面可以跟任意数量的字母、数字或下划线。 2、golang中根据首字母的大小写来确定可以访问的权限。无论是方法名、常量、变量名... -
golang 命名规范和开发规范
2019-07-30 14:51:15文件命名一律采用小写,不用驼峰式,尽量见名思义,看见文件名就可以知道这个文件下的大概内容。 其中测试文件以_test.go结尾,除测试文件外,命名不出现_。 例子: stringutil.go, stringutil_test.go ... -
倍福Twincat编程常用变量命名建议与规范
2019-12-11 22:49:13常用变量命名规则建议 官网命名建议链接 1. 常量 常量都用大写字母来表示, 用下划线 “_” 加强...以结构体为倒,定义结构体时,结构体的名称要使用Prefix_Name的形式,Name以驼峰列式表现 2. 项目内容的引用... -
C++-命名规范
2020-12-16 16:29:05C++命名规范 转自:https://gist.github.com/Menglinucas/aad30ebd60b11e7da0d56b35b2064d7e 基本规则 小写之间用下划线连接。全小写格式 大写之间用下划线连接。全大写格式 大、小写混用,不用下划线连接。首字母... -
程序变量及函数命名方式
2019-12-14 11:37:02函数:帕斯卡,所有单词首字母大写,eg: ResponseToServer() 变量: 正常的局部变量:驼峰,第... 结构体:帕斯卡 静态变量全局变量宏定义:大写加下划线 保护/私有成员函数:_帕斯卡,eg: _ResponseToServer() ... -
编码规范之命名规则---变量名定义规则
2014-11-28 15:37:001.书写风格:驼峰式 int netWork 类似的帕斯卡命名法 总共有三种 http://baike.baidu.com/view/8042085.htm?fr=aladdin#3 2.前缀: 全局带g 结构体、类内成员带m 指针类型带p 带数据类型前缀的为匈牙利式 3.... -
智能合约最佳实践 之 Solidity 编码规范
2018-05-04 11:08:25每一门语言都有其相应的编码规范, Solidity 也一样, 下面官方推荐的规范及我的总结,供大家参考,希望...合约、库、事件及结构体命名应该使用单词首字母大写的方式,这个方式也称为:帕斯卡命名法或大驼峰式命名法... -
Swift语言长征之路(第二天)
2019-06-29 16:22:10注:对类、结构体进行命名时,名字需要第一个单词的首字母大写,因为类、结构体相当于定义了新的swift类型,遵循驼峰式命名法;当对方法、属性命名时,第一个单词首字母小写,与swift类型命名区分开,命名规则同样... -
Matlab代码书写规范
2021-01-11 22:16:10变量命名多采用小驼峰命名方式,如下 var serverForYou 循环变量多采用i,j,ki,j,ki,j,k等前缀形式命名,应避少用非前缀的命名方式,避免与matlab虚数单位重复 for i_population=1:K 常量、全局变量 常量或者全局... -
编程风格与高效编程
2019-09-26 11:28:21变量小写字母为主体,除第一个单词外的后续单词首字母大写作为分隔(驼峰命名法); 结构体、类全部单词的首字母大写,其余小写 函数名全部小写,单词间以下划线分隔 单输出变量可以以输出变量实际意义...