《C语言课程设计》一2.2 程序排版和注释

简介: 本节书摘来自华章出版社《C语言课程设计》一书中的第2章,第2.2节,作者 刘博 董学文,更多章节内容可以访问云栖社区“华章计算机”公众号查看

2.2 程序排版和注释

程序排版和注释非程序功能的组成部分,但清晰、美观的排版和准确、简洁的注释均可增强程序的可读性。

2.2.1 缩进与对齐

缩进可以体现语句块的层次关系。一般采用4个空格或1个Tab字符缩进。若采用Tab字符缩进,可将编辑器Tab字符宽度设置为4。不要在代码中混合使用Tab字符和空格来进行代码缩进。

2.2.2 空行

使用空行的目的在于分隔程序段落,使程序布局更加清晰。每个函数定义之后应加空行。函数体内一组变量定义之后应加空行,函数体内一段逻辑相对独立的代码之后应加空行。

2.2.3 代码行

一行代码只做一件事会使程序易于阅读和注释。如果可能,则应在定义变量的同时初始化。
if、for、do、while、switch等语句应单独成行,其执行语句部分应另起一行,并且即使执行语句只有一行也应用花括号括起来。例如:

if ((tmp = fopen("tmp.txt", "w")) == NULL) {
    printf("Can’t create tmp.txt file\n");
}

长句(大于80个字符)应拆行,拆分出的新行要进行适当的缩进,使排版整齐,语句易读。例如:

struct key keyTable[] = {
    "auto", 0, 
    "break", 0,
    "case", 0, "char", 0, "const", 0, "continue", 0, 
    "default", 0, "do", 0, "double", 0,
    "else", 0, "enum", 0, "extern", 0,
    ......
};

fprintf(fp, "%s %c %s %s\n", (p->data).name, (p->data).sex, 
                   (p->data).tel, (p->data).email);

printf("This is such a long sentence that "
        "it cannot be held within a line\n");

2.2.4 空格

一元运算符前后不要空格,二元运算符两侧应有一个空格。例如:

i++;
i = i + 1;

操作符‘[]’,‘→’,‘.’前后不要空格。例如:

strcpy((n->data).name, buffer.name);

关键字if、for、do、while、switch等与其后的控制表达式的左括号‘(’之间应有一个空格,但左括号‘(’的右边及右括号‘)’的左边不要空格。当if、for、while、switch等语句采用紧凑型写法时,右括号‘)’与左花括号‘{’之间应有一个空格。for语句分号‘;’后应有一个空格。例如:

for (i = 0; i < c; i++) {
    if (strcmp(r[i].email, e) == 0) {
        return i;
    }
}

函数参数个数大于1时,每个逗号‘,’后面应有空格。函数名与紧跟的左括号‘(’之间不要空格。例如:

int MyStrncmp(const char *s1, const char *s2, int len);

2.2.5 对齐

语句if、for、do、while、switch等有“紧凑型”和“清晰型”两种对齐风格,应保持风格一致,不要混合使用。例如:

/* 紧凑型 */
if (argc < 2) { 
    int i;
    ......
} 

/* 清晰性 */
if (argc < 2) 
{ 
     int i;
    ......
}

定义函数时,左花括号另起且独占一行,并与函数对齐。{ }之内的代码块在‘{’右侧4个空格或Tab字符处左对齐。例如:

int MyStrlen(const char *s)
{
    int length = 0;
    ......
}

2.2.6 间接访问操作符‘*’

操作符‘’靠近数据类型时,语义直观,但容易造成误解,操作符‘’靠近变量名可避免误解。例如:
int x, y; / 操作符靠近数据类型,y容易被误解为指针变量 /
int x, y; / 操作符靠近变量名,y不会被误解为指针变量 /

2.2.7 注释

注释有助于程序的阅读,注释语言必须准确、简洁。注释主要说明代码“能做什么”,而非“怎样做”,“怎样做”由代码本身说明。
函数、变量、常量等标识符的命名应尽量体现其含义,以减少不必要的注释。
应边写代码边注释,修改代码的同时修改注释。

  1. 文件注释
    文件注释位于头文件和定义文件的开头,内容可包括版权信息、文件名称、文件描述、当前版本号、作者、修改者、完成日期等。本书中的示例文件注释仅列出了文件名、文件描述和作者。例如:
/*
 * 文件名: keyword.c 
 * 描述: 统计C程序中的关键字
 * 作者: 刘博 
 */
  1. 函数注释
    函数注释内容可包括函数功能、输入参数、输出参数、返回值等,写在函数定义之上,与函数定义之间不留空行。例如(本书中的示例函数注释仅列出了函数功能):

*
 * 函数功能: 计算字符串s的长度
 * 输入参数: 字符串s           
 * 输出参数: 无 
 * 返回值: 字符串长度 
*/
int MyStrlen(const char *s)
{
......
}
  1. 代码行注释
    注释应与被描述的代码相邻,可以放置于代码的上方或右方。函数、变量、常量等标识符的命名若无法充分体现其含义,应进行注释。代码块行数较多或者逻辑较复杂时,应在段落结束处进行注释。
相关文章
|
29天前
|
C语言
最简单的C语言程序示例
最简单的C语言程序示例
19 0
|
29天前
|
Serverless C语言
C语言程序通常具有以下基本结构
C语言程序通常具有以下基本结构
10 0
|
1月前
|
C语言 C++
第一个c语言程序
第一个c语言程序
|
1月前
|
程序员 编译器 C语言
C语言的程序常量
C语言的程序常量
10 0
|
11天前
|
存储 编译器 C语言
深入探索C语言动态内存分配:释放你的程序潜力
深入探索C语言动态内存分配:释放你的程序潜力
26 0
|
1月前
|
C语言
C语言最基本程序控制结构
C语言最基本程序控制结构
13 0
|
15天前
|
C语言
【C语言】第三回 关于字符串,语句和注释的使用2
【C语言】第三回 关于字符串,语句和注释的使用
|
27天前
|
存储 文件存储 C语言
《C语言程序设计》课程设计 -- 火车票票务管理系统
《C语言程序设计》课程设计 -- 火车票票务管理系统
22 1
|
27天前
|
存储 Serverless C语言
C语言程序的结构
C语言是一种广泛使用的编程语言,其程序结构清晰,易于理解。下面我们将详细探讨C语言程序的基本结构,并通过一个示例代码来展示这些组成部分是如何协同工作的。 一、C语言程序的基本结构
14 0
|
28天前
|
程序员 C语言
最简单的C语言程序举例
C语言是一种广泛使用的计算机编程语言,适合用于系统编程,也可以用于编写应用程序。它的语法清晰明了,功能强大,是很多程序员的首选语言。下面,我们将通过一个最简单的C语言程序来介绍其基本结构和语法。
26 0