C++代码规范(速成版·新手必看)

1. 文件排版

1.1 头文件

(1)系统头文件应用:#include <iostream>

(2)只引用需要的头文件

1.2 空行

#include部分、宏定义部分、全局常量部分、全局变量部分、函数和函数之间,用空行隔开。

//例如:C++基本框架格式
#include <iostream>     //头文件

using namespace std;    //命名空间

int main(){             //主函数
    
    //TODO...

    return 0;
}

2. 注释

(1) 关键函数必须写上注释,说明函数的用途

(2)除了特别情况,注释写在代码之前,不要放到代码行之后。

(3)关键代码注释,包括但不限于:赋值,函数调用,表达式,分支等等

(4)善未实现完整的代码,或者需要进一步优化的代码,应加上 // TODO …

(5)对于较大的代码块结尾,如for,while,do...while等,可加上 // end for|while|do

//例如:for循环
for(int i = 0; i < n; i++){
    //语句1;
    //语句2;
    //语句3;
    //TODO...
} //end for :表示此for循环到此结束,可以避免大括号混淆

3. 命名规则

3.1 基本原则

(1)含义清晰,不易混淆;

(2)不和其它模块、系统关键词相冲突

3.2 变量命名规则

(1)变量名只能是字母(A-Z,a-z)和数字(0-9)或者下划线(_)组成

(2)第一个字母必须是字母或者下划线开头

(3)不能使用C++关键字来命名变量,以免冲突

(4)变量名区分大小写

(5)C++目前支持在变量中使用美元符号"$"

// 编译器:MSVC 19.29
// C++标准:C++14
#include <iostream>
using namespace std;
int main() {
	int var = 1;
	int var$ = 2;
	int v$ar = 3;
	int $var = 4;
	cout << var << var$ << v$ar << $var << endl;
}
//感谢大佬“sjc_0910”补充

4. 代码书写建议

4.1 关于添加空格和空行的一些建议

(1)函数名之后不要留空格,紧跟左括号'(',以与关键字区别。

(2)‘,’和‘;’之后要留空格。在for语句中的‘;’其后要留空格,如 for (i = 0; i < 5; i++)

(3)赋值操作符、比较操作符、算术操作符、逻辑操作符、位域操作符,如“ =”、“ +=” 、“>=”、“ <=”、“ +”、“ *”、“ %”、“ &&”、“ <<”、 “ ^”等二元操作符的前后应当加空格。

(4)单目运算符如“ !”、“ ~”、“ ++”、“ --”、“ &”(地址运算符)等前后不加空格。

//下面这段代码就会显得不优雅,看着有些别扭。
void func(int a,int b,int c,int d){
    if(a>=0){
        if(a>=b&&c>=d){
            int * x = & a;
            //TODO...
        }
    }
}

我们希望将它改为以下形式:

void func(int a, int b, int c, int d){
    if (a >= 0){
        if ((a >= b) && (c >= d)){
            int *x = &a;
            //TODO...
        }
    }
}

4.2 关于命名的建议

(1)变量,函数,文件命名应该具有描述性,最好采用英文单词或其组合(不要使用拼音,或者无意义的abc之类的,除了像for (i=0; i<5; i++)中的i这样的),以便记忆和阅读。

(2)函数名用大写字母开头的单词组合而成。

例如:

void Draw();        //绘制
void DrawImage();   //绘制图像

(3)变量和参数用小写字母开头的单词组合而成。

例如:

int value; 
void SetValueMode(int valueMode);

(4)常量全用大写的字母,用下划线分割单词。

例如:

const int MAX = 100;          //最大值
const int MAX_LENGTH = 100;   //最大长度

4.3 关于添加注释的一些建议

(1)在C++中注释主要有两种,程序块的注释常采用“ /* …*/”,行注释一般采用“ //…”。

(2)注释很重要,但是类型和变量命名意义明确要比通过注释解释模糊命名好得多。

(3)边写代码边注释,修改代码同时修改相应的注释,以保证注释与代码的一致性

(4)注释的位置应与被描述的代码相邻,可以放在代码的上方或右方,不可放在下方。

4.4 关于if语句中的变量“与零值比较”的一些建议

(1)不可将布尔变量直接与 TRUE、 FALSE 或者 1、 0 进行比较。假设布尔变量名字为 flag,它与零值比较的标准 if 语句如下:

if (flag)    // 表示 flag 为真
if (!flag)   //表示 flag 为假

(2)应当将整型变量用“ ==”或“!=”直接与 0 比较。

假设整型变量的名字为 value,它与零值比较的标准 if 语句如下:

if (value == 0)
if (value != 0)

(3)不可将浮点变量用“ ==”或“!=”与任何数字比较。无论是 float 还是 double 类型的变量,都有精度限制。所以一定要避免将浮点变量用“ ==”或“!=”与数字比较,应该设法转化成“ >=”或“ <=”形式。

假设浮点变量的名字为 f,应当将

if (f == 0.0) // 隐含错误的比较

修改为

const float EPSINON = 0.00001;
if ((f >= -EPSINON) && (f <= EPSINON))    //通过精度来比较

其中 EPSINON 是允许的误差(即精度)。

(4)应当将指针变量用“ ==”或“!=”与NULL 比较。

假设指针变量的名字为 p,它与零值比较的标准 if 语句如下:

if (p == NULL) // p 与 NULL 显式比较,强调 p 是指针变量
if (p != NULL)

如果不足之处欢迎随时补充~

  • 3
    点赞
  • 53
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 23
    评论
评论 23
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

【ACGO】我不会C++

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值