C++编程规范学习(整理)
来源:互联网 发布:python netsnmp 实例 编辑:程序博客网 时间:2024/05/15 23:35
命名——字母混合型(MyClass) 或 下划线命名(num_err)。
通过名字可以了解意思;类型/变量-》名词;函数-》动词。
文件名:小写 + 下划线, .h和.cpp基本上一一对应,若inline函数多则单独成为 -inl.h文件。
类型名:字母混合型(MyClass)。 纯虚类(接口)在后面 + interface。
变量名:下划线命名(num_err),类成员变量以“_”结尾,全局变量以“g_"开头。
常量名:字母混合型,以“k”开头(包括enum常量)。 #define 的常量,则大写 + “_”。
函数名:下划线命名,如set_...., get_.....。
名字空间:小写下划线,项目_模块
注释://(单行) 或 /**/(多行),文件注释,函数在声明中注释。 //TODO, //FIXME。
空格/缩进:二元操作符前后空格,关键字 if/for/while/switch/do 后面加空格。分隔符后加空格,“()”不加空格。Namespace和预处理不缩进。
折行/空行:‘}’单独占用一行;函数的‘{’要换行,单独占用一行;函数内的块‘ { ’不换行。
头文件:
1、为防止多重包含,要用 ifndef, define, endif,用项目_模块_头文件名定义;
2、降低耦合度,减少头文件修改后重新编译文件的数目;
3、包含顺序:Clib, C++lib, 第三方lib,项目头文件;
4、Inline函数只能少于10行;包含循环和递归的不能inline;虚函数和析构函数不能inline;
5、函数参数顺序:先Input,后output。
作用域:
1、嵌套类不能是public(除interface);
2、尽量不要使用全局变量,尽量使用名字空间内的非成员函数或静态成员函数;
3、局部变量尽量置于其最小作用域内;在用的地方声明并初始化;(恶意修改,循环时注意效率)
4、禁止使用静态或全局的Class Type变量;如要使用全局,只能是内建支持类型,如int, float, char等。
类:
1、不使用默认构造函数,若构造函数复杂,则单独分出函数init();
2、单参数的构造函数要显示explicit声明,防止隐式转换;
3、用DISALLOW_COPY_AND_ASSIGN防止Copy constructor和 assign constructor;
4、简单情况用struct,复杂用class,两者在默认权限中不一样;
5、能用组合,则不用继承;不适用多重继承(接口类除外);
6、Typedef, enum -> constants(static const data members) -> constructor ->destructor -> Methods -> data members。
C++其它特性:
1、尽量用const传参,输出指针;
2、尽量不要运算符重载;
3、使用stdint.h的int32_t或int64_t,来屏蔽机器的不同位数;
4、尽量以enum,const常数或内联函数替代宏定义;
5、不适用RTTI和Exception。
通过名字可以了解意思;类型/变量-》名词;函数-》动词。
文件名:小写 + 下划线, .h和.cpp基本上一一对应,若inline函数多则单独成为 -inl.h文件。
类型名:字母混合型(MyClass)。 纯虚类(接口)在后面 + interface。
变量名:下划线命名(num_err),类成员变量以“_”结尾,全局变量以“g_"开头。
常量名:字母混合型,以“k”开头(包括enum常量)。 #define 的常量,则大写 + “_”。
函数名:下划线命名,如set_...., get_.....。
名字空间:小写下划线,项目_模块
注释://(单行) 或 /**/(多行),文件注释,函数在声明中注释。 //TODO, //FIXME。
空格/缩进:二元操作符前后空格,关键字 if/for/while/switch/do 后面加空格。分隔符后加空格,“()”不加空格。Namespace和预处理不缩进。
折行/空行:‘}’单独占用一行;函数的‘{’要换行,单独占用一行;函数内的块‘ { ’不换行。
头文件:
1、为防止多重包含,要用 ifndef, define, endif,用项目_模块_头文件名定义;
2、降低耦合度,减少头文件修改后重新编译文件的数目;
3、包含顺序:Clib, C++lib, 第三方lib,项目头文件;
4、Inline函数只能少于10行;包含循环和递归的不能inline;虚函数和析构函数不能inline;
5、函数参数顺序:先Input,后output。
作用域:
1、嵌套类不能是public(除interface);
2、尽量不要使用全局变量,尽量使用名字空间内的非成员函数或静态成员函数;
3、局部变量尽量置于其最小作用域内;在用的地方声明并初始化;(恶意修改,循环时注意效率)
4、禁止使用静态或全局的Class Type变量;如要使用全局,只能是内建支持类型,如int, float, char等。
类:
1、不使用默认构造函数,若构造函数复杂,则单独分出函数init();
2、单参数的构造函数要显示explicit声明,防止隐式转换;
3、用DISALLOW_COPY_AND_ASSIGN防止Copy constructor和 assign constructor;
4、简单情况用struct,复杂用class,两者在默认权限中不一样;
5、能用组合,则不用继承;不适用多重继承(接口类除外);
6、Typedef, enum -> constants(static const data members) -> constructor ->destructor -> Methods -> data members。
C++其它特性:
1、尽量用const传参,输出指针;
2、尽量不要运算符重载;
3、使用stdint.h的int32_t或int64_t,来屏蔽机器的不同位数;
4、尽量以enum,const常数或内联函数替代宏定义;
5、不适用RTTI和Exception。
- C++编程规范学习(整理)
- JAVA编程规范(整理)
- 华为 C语言编程风格(根据华为内部软件编程规范总则整理)
- Java编程规范整理
- 【整理】Java编程规范
- Java编程规范整理
- Java编程规范整理
- SQLite-C编程学习整理
- C++编程规范整理(一)
- C++编程规范整理(二)
- google_cpp编程规范要点整理
- C#.NET编码规范整理
- C#.NET编码规范整理
- C#.NET编码规范整理
- MISRA2004概览(C编程规范)
- C编程规范(个人粗笔)
- C语言编程规范(排版)
- MISRA C编程规范(一)
- 浏览内核源码工具
- 读Martin Fowler's 《Patterns of Enterprise Application Architecture》有感
- PowerDesigner使用教程 —— 概念数据模型
- elastix iptables 安全设置
- CMD批处理循环,太强大了
- C++编程规范学习(整理)
- 重建SYSVOL和NETLOGON共享
- 【*】后缀数组(dc3算法构造)
- iOS: 在navigation controller里切换到UIViewController的view时黑屏
- PHPUnit 安装
- 不公开存储过程sp_Msforeachtable与sp_Msforeachdb详解
- centos5.4+asterisk1.8+freepbx2.8 安装笔记
- 操作系统疑问
- 使用ADO.NET轻松操纵数据库