让你写出一份漂亮的代码

2025-11-30 01:06:56

评价一份代码的好坏有许多标准,但无论如何都不仅是能够编译通过,本文旨在给出一份基础的代码风格推荐。

目录目录C / C++ 基础语法注释变量声明与定义运算符与表达式单目运算符双目运算符逗号运算符 ,判断与循环判断循环C / C++ 基础语法注释注释记号(comment marks)与注释文本之间要使用一个空格隔开:

1// 这是正文,前面有空格

2

3/* 这是正文,前后有空格 */

4

5/** 这是一个段落,

6 * 这是第二行,

7 * 每一行都符合这样的要求。并且,这行后面有空格。 */

单行注释使用 //。尽量避免与代码同行,注释应写在相关代码的上面。即使同行也在其之前使用适当数量的空格隔开:

1// 表示苹果的数量

2int apples;

3

4// 完成向量的头删操作,并获取被删除的首元素

5// TODO 该代码不完全安全,待添加向量为空的判断

6int head = vec.front();

7vec.erase(vec.begin());

8

9int apples; // 表示苹果的数量。注意注释前有两个数量的空格与代码隔开

TODO 更多注释记号的说明:多行注释、Docs、TODO、!? 标记等。

变量声明与定义创建变量时应通俗易懂,尽量避免使用意义不明的字母,或至少应有注释:

1// 请这样

2int apples;

3

4// 不要这样

5int a;

6

7// n 为输入数据组数

8int n;

对于较为复杂的变量名,无法用一个单词概括的,除第一个单词外其余单词首字母应当大写:

1// 请这样

2int appleTree;

3

4// 不要这样

5int appletree;

6

7// 请不要在变量名中出现下划线!(某 g 姓学长的执念)

8// NEVER DO THIS!

9int apple_tree;

除非变量之间有明确相关关系,否则尽量不要在一行声明多个变量, 一行声明多个变量时,需要用空格隔开 (遵循 , 运算符规则):

1// 请这样

2int apples;

3int appleTrees;

4

5// 或这样

6int apples, appleTrees, totalApples; // 空格应打在 ',' 号后面

7

8// 不要这样

9int a,b,c,d,n,m,s;

要求指针在声明时立即进行初始化,如:

1int* p1 = nullptr; // C 语言则为 NULL

2

3int foo = 42;

4int* p2 = &foo;

5

6int* p3 = new int;

7// delete p3;

建议 new 和 delete 成对书写。

运算符与表达式单目运算符通常而言单目运算符应与参数之间不要有空格:

1// 请这样

2*pointer = 1;

3pointer++;

4

5// 不要这样

6* poniter = 1;

7pointer ++;

指针1// 声明指针时应当将 * 运算符与变量类型放在一起

2int* pointer;

数组下标 [] 与圆括号 () 内不需要加空格:1// 请这样

2arr[10] = 1;

3fib(5);

4

5// 不要这样

6arr[ 10 ];

7fib( 5 );

双目运算符双目运算符有很多,包括四则运算符、逻辑运算符、位运算符等,运算数(operand)与运算符(operator)之间应有空格:

1// 请这样

2totalApples = smallApples + bigApples;

3arr[1 + 2];

4fib(1 + 2);

5

6// 不要这样

7totalApples=smallApples+bigApples;

8arr[1+2];

9fib[1+2];

逗号运算符 ,逗号运算符是一种特殊的运算符,它用于连接表达式,常出现在变量声明等情况中,逗号运算符后通常需要加上一个空格:

1// 请这样

2int apples, appleTrees;

3swap(a, b);

4

5// 不要这样

6int apples,appleTrees;

7swap(a,b);

判断与循环判断if () 语句所形成的代码块会很大程度上影响代码的风格,因此请务必按照建议格式进行书写。

1// 请这样

2// 'if' 与 '()' 空一格

3if (a > 0)

4{ // '{}' 单独占一行,与 'if' 对齐

5 printf("%d", a); // 代码块内容缩进一个 tab

6}

7else if (a < 0) // 'else' 与 'else if' 另起一行

8{

9 printf("%d", -a)

10}

11else

12{

13 printf("a is zero.");

14}

if () 语句嵌套:

1/**

2 * 嵌套部分遵循「代码块内容缩进一个 tab」的规则

3 * 在此基础上进一步缩进,保证 `{}` 整齐成对出现

4 */

5if (a > 0)

6{

7 if (b > 0)

8 {

9 printf("balabala");

10 }

11 else

12 {

13 printf("balabalabala");

14 }

15}

循环循环格式类似于 if 语句,在这之上注意保持上文提到的格式规范

for 循环的 () 内的三个部分都要写上,彼此之间用 ; + `` (空格) 隔开。

1// 请这样

2for (int i = 0; i < 10; i++)

3{

4 print("hello world");

5}

6

7// 不要这样

8int i = 0;

9for ( ; ; )

10{

11 if (i == 10)

12 {

13 break;

14 }

15 i++;

16}

while 与 do .. while:

1//请这样

2while (i < 10) // 注意空格

3{

4 printf("hello world");

5}

6

7do

8{

9 printf("hello world");

10} while (i < 10);

循环与 if 语句结合:

1while (a < 10)

2{

3 if (b > 5)

4 {

5 printf("b is too large.");

6 break;

7 }

8}

Copyright © 2022 世界杯奖杯_男足世界杯预选赛 - cbatop.com All Rights Reserved.