专栏首页编程语言xuetangC++ 编码&命名规范
原创

C++ 编码&命名规范

1.命名规范

关于命名规范我们常用于本地变量名、全局变量名、预处理指令名称、函数名称、命名空间名称、类名、成员变量名称、成员函数名称。

1.1 通用命名规范.

在开发的时候命名尽量使用描述性的命名。这样的命名更加有助于别人快速的理解。比如:

关于缩写,除非是大家都能够看得懂的缩写。否则尽量不要使用缩写。

1.2 本地变量

通常情况下变量名一律小写。单词以下划线链接。如:

1.3 全局变量

对于全局变量的名称通常可以添加g_作为前缀。建议尽量少的使用全局变量。全局变量的命名一般不做特殊要求。建议和本地变量的命名规则保持一致。

1.4 预处理指令

这里的预处理指令一般是#defined 这样的命名定义。一般情况下建议将#defined 后的名称使用全大写模式。注意defined之后不要添加语句结束符[;].正常的写法例如:

1.5 函数

普通函数通常使用大小写混合模式,函数名以大小写字母开头每个单词的首字母大写。

例如:

对于存取函数(get/set)而言建议和成员变量名称保持一致。例如:

1.6 命名空间

命名空间的名称是全小写的,基于项目名称和目录结构如:

1.7 类

类型命名每个单词以大写字母开头,不包含下划线。例如:

1.8 成员变量

成员变量命名规则和本地变量命名规则保持一致。

1.9 成员函数

成员函数命名规则和全局函数命名规则保持以一致。

2.注释规范

2.1.单行注释

使用双斜线// 或者 /* */ 都可以,一般保持风格同一就好。

2.2.文档注释

通常是新建一个.h或者.cpp文件时。添加在文件顶部的注释。该注释主要包括。版权、许可版本、作者。

2.3.类注释

类注释主要描述当前类的作用,以及提供的相关功能。如果在文档注释中已经包含相关信息。在类注释中可以添加一句详见文档注释。

2.4.函数注释

函数声明:

注释于声明之前,描述函数功能及用法,注释使用描述式("Opens the file")而非指令式 ("Open the file");注释只是为了描述函数而不是告诉函数做什么。通常,注释不会描述函数如何实现,那是定义部分的事情。

函数声明处注释的内容:

函数定义:

每个函数定义时要以注释说明函数功能和实现要点,如使用的漂亮代码、实现的简要步骤、如此实现的理由、为什么前半部分要加锁而后半部分不需要。

2.5. 变量注释

通常变量名本身足以很好说明变量用途,特定情况下,需要额外注释说明。

类数据成员:

每个类数据成员(也叫实例变量或成员变量)应注释说明用途,如果变量可以接受 NULL 或-1等警戒值(sentinel values),须说明。

全局变量:

和数据成员相似,所有全局变量(常量)也应注释说明含义及用途。

3. 编码规范

3.1. 括号

对于C/C++而言。编码的中出现的大括号通常放在函数,类等名称的下一行。例如:

3.2. 缩进

如上一点中代码展示,在代码中可以给出适当的缩进。便于代码的阅读。

本笔记主要从命名规范、注释规范、代码规范三个方面描述了在日常C++开发过程中需要遵守的规范。当然正对于不同公司、不同团队可能会指定自己更加详细的编码规范。在开发过程中可以先阅读一下项目中的其他源代码。让自己的代码风格和项目代码风格保持一致。老九君友情提示:良好的编码规范可以事半功倍哟!

老九学堂出品 小伙伴们如果有好的建议或者发现了其中的错误,欢迎给老师们反馈,建议反馈QQ:614940318。

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 机器学习在MVPD视频广告中的应用

    本文来自MHV (Mile High Video) 2019的演讲,作者是来自于Charter公司的Srilal Weera。本次演讲主要讲述了机器学习在视频分...

    用户1324186
  • 科学使用HBase Connection

    这个问题的答案简单而不简单:HBase客户端是不需要维护连接池的,或者说,Connection对象已经帮我们做好了。但是,对Connection使用不当是HBa...

    王知无
  • SQLmode最佳实践

    MySQL服务可以在不同的SQL模式下运行,并且可以针对不同的客户端以不同的方式应用这些模式,具体取决于sql_mode系统变量的值。我们可以设置全局SQL模式...

    MySQL技术
  • 基础面试,为什么面试官总喜欢问String?

    关于 Java String,这是面试的基础,但是还有很多童鞋不能说清楚,所以本文将简单而又透彻的说明一下那个让你迷惑的 String

    用户4172423
  • 一日一技:在 Python 中快速遍历文件

    实际上,要解决遍历文件的问题,只需要使用 Python 自带的 glob模块即可:

    青南
  • 【整理分享】14张思维导图构建 Python 核心知识体系

    基础知识图一包括了基本规则、Python语言特点、计算机语言、如何运行Python、变量赋值五个方面,辅助你快速掌握Python编程的基底知识。

    1480
  • 一日一技:实现函数调用结果的 LRU 缓存

    在工程项目中,可能有一些函数调用耗时很长,但是又需要反复多次调用,并且每次调用时,相同的参数得到的结果都是相同的。在这种情况下,我们可能会使用变量或者列表来存放...

    青南
  • 面试总问的jvm调优到底是要干什么?

    没有那家卖瓜的会说自己家的不甜,同样,没有哪个开源项目愿意告诉你在对它条件最苛刻的时候压力情况是多少,一般官网号称给你看的性能指标都是在最理想环境下的,...

    用户4143945
  • 基于HTML5 canvas的纯JS二维码生成

    qrious是一款基于HTML5 canvas的纯JS二维码生成插件。通过qrious.js可以快速生成各种二维码,你可以控制二维码的尺寸颜色,还可以将生成的二...

    用户5997198
  • 成为高级程序员不得不了解的并发

    到目前为止,你学到的都是顺序编程,顺序编程的概念就是某一时刻只有一个任务在执行,顺序编程固然能够解决很多问题,但是对于某种任务,如果能够并发的执行程序中重要的部...

    用户4143945

扫码关注云+社区

领取腾讯云代金券