学科分类
目录
C语言

程序格式

程序的格式不影响代码的执行,但影响其可读性和维护性。程序的格式应追求清楚美观、简洁明了,让人一目了然。

1、代码行

在C语言程序中,一行代码最好只写一条语句,这样方便测试;一行最好只写一个变量,这样方便写注释。例如下面的代码:

int num;
int age;

需要注意的是,if、for、while、do等语句各占一行,其执行语句无论有几条都用符号“{”和“}”将其包含在内。例如下面的代码。

if (number < age)
{
  ......
}

2、对齐与缩进

对齐与缩进可以保证代码的整洁、层次清晰。对齐与缩进主要表现在以下几点:

● 一般用设置为4个空格的Tab键缩进,不用空格缩进。

● 符号“{”和与其对应的“}”要独占一行,且位于同一列,与引用它们的语句左对齐。

● 位于同一层符号“{”和“}”之内的代码,要在“{”的下一行缩进,即同层次的代码在同层次的缩进层上。

下面将列举一些风格良好的代码。

(1)函数定义语句的代码风格

void Function(int x)
{
    ... // program code
}

(2)if-else语句的代码风格

if (condition)
{
  ... // program code
}
else
{
  ... // program code
}

(3)for语句的代码风格

for (initialization; condition; update)
{
  ... // program code
}

(4)while语句的代码风格

while (condition)
{
  ... // program code
}

(5)如果出现嵌套的{},则使用缩进对齐

{
  ...
  {
​    ...
  }
  ...
}

3、空格和空行

需要空格的情况主要有以下几点:

(1)if、while、switch等关键字与之后的左括号“(”之间,例如“for (i = 0; i < 10; i++)”。

(2)双目运算符两侧,例如“p == NULL”。

(3)逗号“,”与分号“;”之后,例如“for (i = 0; i < 10; i++)”。

(4)辅助运算符两侧,例如“a = b;”。

不需要添加空格的位置有以下几个

(1)函数名与之后的左括号“(”,包括带参数的宏与之后的左括号“(”,例如“max(a, b)”;

(2)分号“;”或冒号“:”之前;

(3)左括号“(”右边,右括号“)”左边,例如“if (p == NULL)”。

空行起到分隔程序段落的作用,需要添加空行的情况主要有以下几点。

(1)函数定义之前、每个函数定义结束之后加空行,例如下面的代码;

void Function1(...)
{
    ...
}
// 在这里添加空行
void Function2(...)
{
    ...
}
// 在这里添加空行
void Function3(...)
{
    ...
}

(2)在一个函数体内,相邻两组逻辑上密切相关的语句块之间加空行,语句块内不加空行,例如下面的代码。

while (condition)
{
  statement1;
  // 在这里添加空行
  if (condition)
  {
    statement2;
  }
  else
  {
    statement3;
  }
  // 在这里添加空行
  statement4;
}

4、长行拆分

代码行不宜过长,应控制在10个单词或70~80个字符以内,实在太长时要在适当位置拆分。折行后应该如何缩进?良好的做法是,第一次折行后,在原来缩进的基础上增加1/2的Tab大小的空格,之后的折行全部对齐第二行,例如下面的代码。

if (veryLongVar1 >= veryLongVar2
&& veryLongVar3 >= veryLongVar4)
{
  DoSomething();
}
double FunctionName(double variablename1,
 double variablename2);
for (very_longer_initialization;
 very_longer_condition;
 very_longer_update)
{
  DoSomething();
}

5**、修饰符*和&的位置**

从语义上讲,修饰符*和&靠近数据类型会更直观,但对多个变量声明时容易引起误解,例如下面的代码。

int* x, y;

上面的代码中定义了int类型变量x和int类型变量y,但由于修饰符靠近int,因此会让人误以为y的数据类型是int*类型的,这样是不对的。

基于上面示例代码造成的误解,人们提倡修饰符*和&靠近变量名,例如下面的代码。

int *x, y;

上面的代码能使人们一眼就能看出,变量x是int类型,而y是int类型的,不会造成误解。

点击此处
隐藏目录