前段时间,导师指导我们做c语言的通讯录。在导师看过后,发现我们所写的程序中最大问题就是没有标准我们的代码格
式。所以在查找了一些资料后,在这里总结一下书写c语言代码的要求。
有以下几点十分重要。
1.缩进 2.空行的使用 3.折行的使用 4.注释的位置5.如何进行命名 6.程序标号(大括号) 7.文件的整体结构 8.其它
1.缩进
首先要说的是缩进,缩进可以使得我们的文章更加的有层次感。通常情况下,我们不再使用tab键来缩进。因为不同的电脑可能会tab键所占的宽度不相同,如果使用的话可能无法达到预期的效果。因此,我们一般都使用4个空格键来进行缩进,以防意外的发生。
例子(缩进):
void do_it()
{
switch (state)
{
case STAT_A:
...
break;
case STATE_B:
...
break;
default:
break;
}
}
2.空行
空行也很重要,恰当的使用空行可以让我们的程序更加有条理性。我们一般在不同的逻辑段落添加空行。1.我们在每个函数之间要加上空行 2.判断语句前后加空行 3.在进行对变量和函数的说明时加空行对两者区分
例子(空格):
u32_t read_flag;
u32_t read_count;
u32_t write_flag;
u32_t write_buff;
u32_t write_count;
s32_t read_data(u8_t *buf, u32_t size)
{
u8_t flag;
if (NULL==buf)
return ‐1;
if ((‐1 == size) || (size>=MAX_READ_SIZE))
return ‐1;
flag=read_port_status();
...
}
s32_t read_data(u8_t *buf, u32_t size)
{
...
}
3.折行
还有关于折行的使用。在每一行中我们最好不要超过80列,并且使用逻辑结构时,各个条件之间要要使用折行,并且内容尽量的对齐。
例子(折行):
else if (((1==status)||(2==status)||(8==status))
&& ((20==count)||(0==count))
&& (0==flag))
4.注释
在编写程序时,我们要加入适当的注释,这样才能使代码更容易让人理解。
在以下几种情况我们需要进行注释。
1.文件开头需要注释段落
2.函数开头需要注释段落
3.全局变量需要详细注释
4.特殊功能的局部变量需要详细注释
5.变量bit域详细注释
6.为特殊功能的宏定义加注释
在进行注释时我们也要做到以下几点注意:
1.尽量使用 // 作为程序内部注释
2. //* ‐‐ *// 用于文件、函数头部注释段落
3.在不同条件下可能被使用的代码不能注释,用#if 0 ‐‐ #endif
例子:(在文件头的注释)
/***************************************************
Copyright (C), 20xx‐20xx, xxx Group
File name: xxx
Description: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Function List:
func1: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
func2: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
History:
Author: xxx Version: xxx Date: xxx Email: xxx
Description: Create
Author: xxx Version: xxx Date: xxx Email: xxx
Description: Fix xxx bugs
***************************************************/
例子:(在函数头的注释)
/*************************************************
Name: xxxx(函数名称)
Description: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx(函数功能、性能等的描述)
Calls: xxxxxxxxxx
xxxxxxxxxx(被本函数调用的主要函数清单)
Called by: xxxxxxxx
xxxxxxxx(调用本函数的函数清单)
Data Accessed: xxxx(访问的公共数据、表格、数据库)
Data Updated: xxxx(被修改的公共数据、表格、数据库)
Inputs: xxxx
xxxx (输入参数说明,参数作用、取值和参数间关系)
Outputs: xxxx (对输出参数的说明)
Return: xxxx (函数返回值的说明)
Others: xxxx (其它使用说明和注意事项)
*************************************************/
5.命名
在命名时,我们尽量要让函数、变量和数据类型的名字更接近于我们自己的语言,尽量做到可以让别人一眼看出其作用。
平常的一些小习惯:
1.在使用指针变量、全局变量和结构体时,注意在指针变量前加“p_“,在全局变量前加“g_“,结构体变量加后缀“_t“。这样可以有效的进行区分。
2.如果在一个变量中有多个单词,建议每个单词之间加下划线。
3.最好不要在变量名中掺杂大写字母。因为常量通常用大写字母表示。
4.如果想要对使用的变量名进行简化,建议使用以下的规则: (1).较短的单词可通过去掉“元音”形成缩写
(2).较长的单词可取单词的头几个字母形成缩写
(3).尽量使用公认的缩写。
示例:
temp-- tmp
lag--flg
message--msg
尽管有着这么多的规定,但是有时我们仍然会感觉变量名字不够用。所以建议在使用函数时,对函数中形参定义时在每个变量前加“函数名_变量名“进行区分。
更加要谨慎对全局变量的使用,在进行命名时要时时注意重名的情况。
6.大括号的使用
我们常用大括号的格式如示例
例子(大括号):
while
{
//**************
}
我们要注意让每对大括号都保持在一个列上。7.文件的整体结构
当我们真正编写项目时要有以下几点:
1.版权声明
2.文件用途说明
3.编写和修改记录
4.#include 头文件
5.局部函数申明(只将会被外部引用的全局函数名称放在头文件里,其余的在c文件头部申明)
6.全局变量申明(不能放在头文件里,头文件里面用extern申明供外部访问的全局变量)
7.单个c程序长度少于300行,单个函数不要超过100行
8.其它规定
其实以上这些要求并不代表程序不这样写就不能运行。只是遵守这些规定能让我们更好的与他人进行交流。
所以,我们也要更加的重视自己书写语句的正确性,这点的重要性也很强。