前言
编码规范是成为一个优质程序员的重要一课,它是编程的样式的模板。
为了跟大佬们一样写出简洁、可维护、可靠、可测试、高效、可移植的代码,我参考网上的资料做了一个归类。
一、编程规范的作用
1.提高源程序的可读性和可维护性
2.降低错误的机会
3.提高源代码可重用性和质量
二、规范的三种形式
1.原则:编程时应该坚持的指导思想
2.规则:编程时必须遵守的约定
3.建议: 编程时必须加以考虑的约定
三、规范的内容
1. 基本原则
原则1-1
首先是为人编写程序,其次才是计算机。
说明:这是软件开发的基本要点,软件的生命周期贯穿产品的开发、测试、生产、用户使用、版本升级和后期维护等长期过程,只有易读、易维护的软件代码才具有生命力。
原则1-2
保持代码的简明清晰,避免过分的编程技巧。
简单是最美。保持代码的简单化是软件工程化的基本要求。不要过分追求技巧,否则会降低程序的可读性。
原则1-3
所有的代码尽量遵循ANSI C标准
所有的代码尽可能遵循ANSI C标准,尽可能不使用ANSI C未定义的或编译器扩展的功能。
原则1-4
编程时首先达到正确性,其次考虑效率。
编程首先考虑的是满足正确性、健壮性、可维护性、可移植性等质量因素,最后才考虑程序的效率和资源占用。
原则1-5
避免或少用全局变量
过多地使用全局变量,会导致模块间的紧耦合违反模块化的要求
原则1-6
尽量遥免使用GOTO语句
原则1-7
尽可能复用、修正老的代码。
尽量选择可借用的代码,对其修改优化以达到自身要求。
2. 布局
规则2-1-1
遵循统一的布局顺序来书写头文件#ifmndef 文件名 H(全大写)
#defie
文件名 H
其它条件编译选项
#include(依次为标准库头文件、非标准库头文件)常量定义
全局宏
全局数据类型
类定义
模板 (template)(包括C++中的类模板和函数模板) 全局函数原型
#endif
规则2-1-2
遵循统一的布局顺序来书写实现文件
文件头注释
#include(依次为标准库头文件、非标准库头文件)常量定义
文件内部使用的宏
文件内部使用的数据类型
全局变量
本地变量(即静态全局变量)
局部函数原型
类的实现全局函数局部函数
规则2-1-3
使用注释块分离上面定义的节
规则2-1-4
头文件必须要避免重复包含
规则2-1-5
包含标准库头文件用尖括号 < >
包含非标准库头文件用双引号 " "
规则2-1-6
遵循统一的顺序书写类的定义及实现
类的定义(在定义文件中) 按如下顺序书写:
- 公有属性,公有函数
- 保护属性,保护函数
- 私有属性,私有函数
类的实现(在实现文件中) 按如下顺序书写:
- 构造函数,析构函数
- 公有函数
- 保护函数
- 私有函数
规则2-2-1
程序中一行的代码和注释不能超过80列
包括空格在内不超过80列
规则2-2-2
if、 else、 else if、 for、while、do等语句自占一行,执行语句不得紧跟其后。不论执行语句有多少都要加{ }
规则2-2-3
结构型的数组、多维的数组如果在定义时初始化,按照数组的矩阵结构分行书写。
建议2-3-1
在switch语句中,每一个case分支和default要用{ }括起来,{ }中的内容需要缩进。
规则2-4-1
不同逻辑程序块之间要使用空行分隔
规则2-4-2
多元运算符和它们的操作数之间至少需要一个空格。
规则2-4-3
关键字之后要留空格
if、for、while等关键字之后应留一个空格再跟左括号 ’(’,以突出关键字
另外 sizeof 是关键字,strlen 是函数
规则2-4-4
函数名之后不要留空格
函数名后紧跟左括号 ’(’,以与关键字区别
规则2-4-2
不是行结束符号时其后要留空格
规则2-4-6
注释符与注释内容之间要用一个空格进行分隔
C/C++ 编程规范总结-2