- 浏览: 781421 次
- 性别:
- 来自: 深圳
-
文章分类
- 全部博客 (1045)
- 数据结构 (36)
- UML与设计模式 (42)
- c++ (87)
- rust (36)
- Qt (41)
- boost模板元编程 (43)
- Linux (77)
- 汇编 (4)
- 其它 (2)
- 烹饪 (3)
- unix c / socket (73)
- 软件工程 (4)
- shell (53)
- Python (37)
- c++ primer 5th(c++11) (22)
- 数据库/MySQL (27)
- 数据存储 (4)
- lisp (7)
- git (4)
- Utility (3)
- CDN与DNS (54)
- Http (53)
- php (7)
- nginx/lua/openresty (41)
- redis (11)
- TCP/IP (16)
- 互联网 (6)
- kernel (2)
- go (34)
- 区块链 (43)
- 比特股 (13)
- 以太坊 (23)
- 比特币 (23)
- 密码学 (10)
- EOS (53)
- DAG (1)
- docker (1)
- filecoin (7)
- solidity (65)
- ipfs (8)
- 零知识证明 (1)
- openzeppelin (3)
- java (1)
- defi (7)
- Ton (0)
最新评论
转自google,c++编程规范
一.作用域
1. 不在构造函数中做太多逻辑相关的初始化;
2. 编译器提供的默认构造函数不会对变量进行初始化,如果定义了其他构造函数,编译器
不再提供,需要编码者自行提供默认构造函数;
3. 为避免隐式转换,需将单参数构造函数声明为explicit;
4. 为避免拷贝构造函数、赋值操作的滥用和编译器自动生成,可目前声明其为private
且无需实现;
5. 仅在作为数据集合时使用struct;
6. 组合>实现继承>接口继承>私有继承,子类重载的虚函数也要声明virtual关键字,
虽然编译器允许不这样做;
7. 避免使用多重继承,使用时,除一个基类含有实现外,其他基类均为纯接口;
8. 接口类类名以Interface为后缀,除提供带实现的虚析构函数、静态成员函数外,其
他均为纯虚函数,不定义非静态数据成员,不提供构造函数,提供的话,声明为protected;
9. 为降低复杂性,尽量不重载操作符,模板、标准类中使用时提供文档说明;
10. 存取函数一般内联在头文件中;
11. 声明次序:public->protected->private;
12. 函数体尽量短小、紧凑,功能单一。
二.其它c++特性
1. 对于智能指针,安全第一、方便第二,尽可能局部化(scoped_ptr
scoped_ptr);
2. 引用形参加上 const
const,否则使用指针形参;
3. 函数重载的使用要清晰、易读;
4. 鉴于容易误用,禁止使用缺省函数参数(值得商榷);
5. 禁止使用变长数组;
6. 合理使用友元;
7. 为了方便代码管理,禁止使用异常(值得商榷);
8. 禁止使用 RTTI
RTTI,否则重新设计代码吧;
9. 使用 C++
C++风格的类型转换,除单元测试外不要使用 dynamic_cast
dynamic_cast;
10. 使用流还 printf + read/write it is a problem
read/write,it
problem;
11. 能用前置自增/减不用后置自增/减;
12. const 能用则用,提倡 const 在前;
13. 使用确定大小的整型,除位组外不要使用无符号型;
14. 格式化输出及结构对齐时,注意 32 位和 64 位的系统差异;
15. 除字符串化、连接外尽量避免使用宏;
'\0'
16. 整数用 0,实数用 0.0
0.0,指针用 NULL
NULL,字符(串)用'\0'
'\0';
17. 用 sizeof(varname)
sizeof(varname)代替 sizeof(type)
sizeof(type);
18. 只使用 Boost 中被认可的库。
三.日志
1. 关于注释风格,很多 C++ coders 更喜欢行注释,C coders 或许对块注释依然情
C++的
有独钟,或者在文件头大段大段的注释时使用块注释;
2. 文件注释可以炫耀你的成就,也是为了捅了篓子别人可以找你;
3. 注释要言简意赅,不要拖沓冗余,复杂的东西简单化和简单的东西复杂化都是要被鄙视
的;
it
4. 对于 Chinese coders 来说,用英文注释还是用中文注释,it is a problem
problem,但不
管怎样,注释是为了让别人看懂,难道是为了炫耀编程语言之外的你的母语或外语水平吗;
5. 注释不要太乱,适当的缩进才会让人乐意看,但也没有必要规定注释从第几列开始(我
UNIX/LINUX
自己写代码的时候总喜欢这样),UNIX/LINUX 下还可以约定是使用 tab 还是 space
space,
space
个人倾向于 space;
6. TODO 很不错,
有时候,
注释确实是为了标记一些未完成的或完成的不尽如人意的地方 ,
这样一搜索,就知道还有哪些活要干,日志都省了。
四.格式
1) 返回值总是和函数名在同一行;
2) 左圆括号(open parenthesis)总是和函数名在同一行;
3) 函数名和左圆括号间没有空格;
4) 圆括号与参数间没有空格;
5) 左大括号(open curly brace)总在最后一个参数同一行的末尾处;
6) 右大括号(close curly brace)总是单独位于函数最后一行;
7) 右圆括号(close parenthesis)和左大括号间总是有一个空格;
8) 函数声明和实现处的所有形参名称必须保持一致;
9) 所有形参应尽可能对齐;
10) 缺省缩进为 2 个空格;
11) 独立封装的参数保持 4 个空格的缩进。
五.代码相关
1. 行宽原则上不超过 80 列,把 22 寸的显示屏都占完,怎么也说不过去;
2. 尽量不使用非 ASCII 字符,
如果使用的话,
参考 UTF-8 格式
(尤其是 UNIX/Linux
UNIX/Linux
Windows
下,Windows 下可以考虑宽字符),尽量不将字符串常量耦合到代码中,比如独立出资
源文件,这不仅仅是风格问题了;
MSVC
3. UNIX/Linux 下无条件使用空格,MSVC 的话使用 Tab 也无可厚非;
4. 函数参数、逻辑条件、初始化列表:要么所有参数和函数名放在同一行,要么所有参数
并排分行;
5. 除函数定义的左大括号可以置于行首外,包括函数/类/结构体/枚举声明、各种语句的
左大括号置于行尾,所有右大括号独立成行;
6. ./->操作符前后不留空格,*/&
*/&不要前后都留,一个就可,靠左靠右依各人喜好;
7. 预处理指令/命名空间不使用额外缩进,类/结构体/枚举/函数/语句使用缩进;
8. 初始化用=还是()依个人喜好,统一就好;
9. return 不要加()
10. 水平/垂直留白不要滥用,怎么易读怎么来。
相关总结:
13.定义函数时,输入参数(值传递,常数引用)在前,输出参数(非常数引用)在后
14.对那些临时的、短期的解决方案,或已经够好但并不完美的代码使用 TODO 注释。
一.作用域
1. 不在构造函数中做太多逻辑相关的初始化;
2. 编译器提供的默认构造函数不会对变量进行初始化,如果定义了其他构造函数,编译器
不再提供,需要编码者自行提供默认构造函数;
3. 为避免隐式转换,需将单参数构造函数声明为explicit;
4. 为避免拷贝构造函数、赋值操作的滥用和编译器自动生成,可目前声明其为private
且无需实现;
5. 仅在作为数据集合时使用struct;
6. 组合>实现继承>接口继承>私有继承,子类重载的虚函数也要声明virtual关键字,
虽然编译器允许不这样做;
7. 避免使用多重继承,使用时,除一个基类含有实现外,其他基类均为纯接口;
8. 接口类类名以Interface为后缀,除提供带实现的虚析构函数、静态成员函数外,其
他均为纯虚函数,不定义非静态数据成员,不提供构造函数,提供的话,声明为protected;
9. 为降低复杂性,尽量不重载操作符,模板、标准类中使用时提供文档说明;
10. 存取函数一般内联在头文件中;
11. 声明次序:public->protected->private;
12. 函数体尽量短小、紧凑,功能单一。
二.其它c++特性
1. 对于智能指针,安全第一、方便第二,尽可能局部化(scoped_ptr
scoped_ptr);
2. 引用形参加上 const
const,否则使用指针形参;
3. 函数重载的使用要清晰、易读;
4. 鉴于容易误用,禁止使用缺省函数参数(值得商榷);
5. 禁止使用变长数组;
6. 合理使用友元;
7. 为了方便代码管理,禁止使用异常(值得商榷);
8. 禁止使用 RTTI
RTTI,否则重新设计代码吧;
9. 使用 C++
C++风格的类型转换,除单元测试外不要使用 dynamic_cast
dynamic_cast;
10. 使用流还 printf + read/write it is a problem
read/write,it
problem;
11. 能用前置自增/减不用后置自增/减;
12. const 能用则用,提倡 const 在前;
13. 使用确定大小的整型,除位组外不要使用无符号型;
14. 格式化输出及结构对齐时,注意 32 位和 64 位的系统差异;
15. 除字符串化、连接外尽量避免使用宏;
'\0'
16. 整数用 0,实数用 0.0
0.0,指针用 NULL
NULL,字符(串)用'\0'
'\0';
17. 用 sizeof(varname)
sizeof(varname)代替 sizeof(type)
sizeof(type);
18. 只使用 Boost 中被认可的库。
三.日志
1. 关于注释风格,很多 C++ coders 更喜欢行注释,C coders 或许对块注释依然情
C++的
有独钟,或者在文件头大段大段的注释时使用块注释;
2. 文件注释可以炫耀你的成就,也是为了捅了篓子别人可以找你;
3. 注释要言简意赅,不要拖沓冗余,复杂的东西简单化和简单的东西复杂化都是要被鄙视
的;
it
4. 对于 Chinese coders 来说,用英文注释还是用中文注释,it is a problem
problem,但不
管怎样,注释是为了让别人看懂,难道是为了炫耀编程语言之外的你的母语或外语水平吗;
5. 注释不要太乱,适当的缩进才会让人乐意看,但也没有必要规定注释从第几列开始(我
UNIX/LINUX
自己写代码的时候总喜欢这样),UNIX/LINUX 下还可以约定是使用 tab 还是 space
space,
space
个人倾向于 space;
6. TODO 很不错,
有时候,
注释确实是为了标记一些未完成的或完成的不尽如人意的地方 ,
这样一搜索,就知道还有哪些活要干,日志都省了。
四.格式
1) 返回值总是和函数名在同一行;
2) 左圆括号(open parenthesis)总是和函数名在同一行;
3) 函数名和左圆括号间没有空格;
4) 圆括号与参数间没有空格;
5) 左大括号(open curly brace)总在最后一个参数同一行的末尾处;
6) 右大括号(close curly brace)总是单独位于函数最后一行;
7) 右圆括号(close parenthesis)和左大括号间总是有一个空格;
8) 函数声明和实现处的所有形参名称必须保持一致;
9) 所有形参应尽可能对齐;
10) 缺省缩进为 2 个空格;
11) 独立封装的参数保持 4 个空格的缩进。
五.代码相关
1. 行宽原则上不超过 80 列,把 22 寸的显示屏都占完,怎么也说不过去;
2. 尽量不使用非 ASCII 字符,
如果使用的话,
参考 UTF-8 格式
(尤其是 UNIX/Linux
UNIX/Linux
Windows
下,Windows 下可以考虑宽字符),尽量不将字符串常量耦合到代码中,比如独立出资
源文件,这不仅仅是风格问题了;
MSVC
3. UNIX/Linux 下无条件使用空格,MSVC 的话使用 Tab 也无可厚非;
4. 函数参数、逻辑条件、初始化列表:要么所有参数和函数名放在同一行,要么所有参数
并排分行;
5. 除函数定义的左大括号可以置于行首外,包括函数/类/结构体/枚举声明、各种语句的
左大括号置于行尾,所有右大括号独立成行;
6. ./->操作符前后不留空格,*/&
*/&不要前后都留,一个就可,靠左靠右依各人喜好;
7. 预处理指令/命名空间不使用额外缩进,类/结构体/枚举/函数/语句使用缩进;
8. 初始化用=还是()依个人喜好,统一就好;
9. return 不要加()
10. 水平/垂直留白不要滥用,怎么易读怎么来。
相关总结:
13.定义函数时,输入参数(值传递,常数引用)在前,输出参数(非常数引用)在后
14.对那些临时的、短期的解决方案,或已经够好但并不完美的代码使用 TODO 注释。
发表评论
-
柔性数组
2017-09-20 09:53 525#include <iostream> #i ... -
rawsocket发送icmp包
2017-09-06 09:54 676#include <stdio.h> #in ... -
查看glibc版本
2016-12-07 14:13 562strings /lib64/libc.so.6 |grep ... -
trim
2015-05-14 14:45 383/* trim from start */ ... -
log
2015-03-30 17:42 467log.h #ifndef __LOG_H__ #def ... -
输出类名
2014-02-20 21:51 600#include <iostream> us ... -
GC的改良
2013-10-17 22:05 591分代回收:对分配不久,诞生时间较短的“年龄”对象进行重点扫描, ... -
GC与引用记数
2013-10-16 21:57 712根(Root)就是判断对象是否可被引用的起始点。至于哪里才是根 ... -
pthread
2013-07-09 10:10 602#include <pthread.h> # ... -
const
2012-10-08 23:57 1167#include<iostream> usi ... -
声明与定义
2012-10-04 11:33 707extern int i;//声明但未定义 int j;//声 ... -
windows下iconv转码
2012-08-28 17:07 2880http://ah-fu.iteye.com/blog/281 ... -
在windows下使用pthread
2012-08-28 10:12 945http://hi.baidu.com/yylwuwei/bl ... -
消除编译器未使用的警告
2012-03-29 15:07 1128#define XXX_UNUSED(x) (void)x; ... -
消息队列
2012-03-27 16:56 1434msgget函数用于创建一个新的消息队列或访问一个已存在的消息 ... -
静态链接库
2012-03-16 16:54 727静态库是obj文件的一个集合,通常以.a为后缀,理论上执行速度 ... -
#if0
2012-03-07 13:45 1280#if 0 #endif 用于屏蔽注释中间的代码,避免注释嵌 ... -
枚举转char
2012-03-05 11:54 1041#define NAME(value) #value -
libevent相关
2012-02-03 11:04 1713void event_set(struct event *ev ... -
c++0x
2012-02-01 09:55 791http://blog.csdn.net/pongba/art ...
相关推荐
Python 编程规范 Python 编程规范是指编写 Python 代码时需要遵守的一些约定和惯例,以便提高代码的可读性、可维护性和可重用性。本文简要叙述了 Python 编程规范的要点,包括代码风格、缩进方式、注释、命名约定、...
C++编程规范 C++编程规范是一种详细的编程指南,旨在提高程序员的编程能力和软件质量。本书从编程老手与高手的误区开始,指出编程高手的误区和缺点,然后通过作者的个人经历,讲述了软件设计的基础知识和高质量程序...
《C++语言编程规范》是华为公司制定的一套详尽的编程指导原则,旨在提高代码质量和可维护性,是程序员进入大厂时应当遵循的重要准则。这份规范不仅适用于C++,也涵盖了C语言的部分内容,因为C++是在C的基础上发展...
《华为C语言编程规范》是一份详尽的指导文档,旨在为C语言开发者提供一套标准的编程准则,以提升代码质量、可读性、可维护性和安全性。华为作为全球知名的IT企业,其内部的编程规范具有高度的专业性和实践性,对于...
《华为技术有限公司C++语言编程规范》是一份深入细致的编程指南,旨在为开发者提供一套在C++编程中应遵循的最佳实践。这份规范不仅适用于华为公司内部开发,也对外界开发者具有很高的参考价值,帮助他们提升代码质量...
C语言编程规范C语言编程规范C语言编程规范C语言编程规范C语言编程规范C语言编程规范C语言编程规范C语言编程规范C语言编程规范C语言编程规范C语言编程规范C语言编程规范C语言编程规范C语言编程规范C语言编程规范C语言...
Google C++ 编程规范详解 在软件开发过程中,编程规范plays a crucial role in ensuring that the code is readable, maintainable, and efficient. Google 的 C++ 编程规范是业界公认的编程规范之一,本文将对该...
Google C++编程规范 Google C++编程规范是Google在2011年3月8日发布的一份C++编程规范,该规范旨在提供一致的编程风格和-best practice,以提高代码质量和可维护性。下面是该规范中的一些重要知识点: 1. 头文件...
《C++编程规范:101条规则准则与最佳实践》中,两位知名的C++专家将全球C++界20年的集体智慧和经验凝结成一套编程规范。这些规范可以作为每一个开发团队制定实际开发规范的基础,更是每一位C++程序员应该遵循的行事...
JAVA编程规范.pdf 本文档提供了JAVA编程规范的详细说明,涵盖了类和方法的设计、编程原则、命名约定等方面的内容。 类和方法的设计 在设计类和方法时,需要遵守一些基本原则。首先,类应该具有强大的内聚力,即类...
编程规范是软件开发过程中的重要组成部分,它定义了一套规则和标准,旨在提高代码质量、可读性、可维护性和团队协作效率。华为编程规范作为业界知名的指导文档,结合了华为在软件工程领域的实践经验和最佳做法,对于...
### PIC18F编程规范详解 #### 一、概述 本文档主要介绍的是Microchip公司旗下的PIC18F2XXX/4XXX系列单片机的编程规范。该系列单片机广泛应用于各种嵌入式系统设计中,因其高性能、低功耗及丰富的外设资源而受到...
VC编程规范VC编程规范VC编程规范VC编程规范
《华为编程规范——编程规范手册》是一份专为C语言开发者设计的指南,旨在提高代码质量和可维护性,确保团队间的协同开发效率。华为作为全球知名的科技企业,其编程规范在业界具有很高的参考价值,这份手册是华为...
C语言编程规范标准 本文档旨在为C语言程序员提供一个统一的编程规范标准,确保编写的代码清晰、可读、可维护、可扩展和高效。该规范涵盖了从头文件编码到代码编辑、编译的方方面面,旨在提高编程效率和代码质量。 ...
在IT行业中,编程规范是确保代码质量、可读性、可维护性和团队协作效率的关键因素。华为作为全球领先的电信解决方案供应商,对编程规范有严谨的要求,以保证其软件产品的高效和稳定。本压缩包文件包含了华为在编程...