这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » MCU » (转)收集的C51c语言的编程规范

共7条 1/1 1 跳转至

(转)收集的C51c语言的编程规范

高工
2009-05-04 13:55:12     打赏

编程首要是要考虑程序的可行性,然后是可读性可移植性健壮性以及可测试性。这是总则。但是很多人忽略了可读性、可移植性和健壮性(可调试的方法可能歌不相同),这是不对的。
        1.当项目比较大时,最好分模块编程,一个模块一个程序,很方便修改,也便于重用和便于阅读。
        2.每个文件的开头应该写明这个文件是哪个项目里的哪个模块,是在什么编译环境下编译的,编程者(/修改者)和编程日期,值得注意的是一定不要忘了编程日期,因为以后你再看文件时,会知道大概是什么时候编写的,有些什么功能,并且可能知道类似模块之间的差异(有时同一模块所用的资源不同,和单片机相连的方法也不同,或者只是在原有的模块上加以改进)。
        3.一个C源文件配置一个h头文件或者整个项目的C文件配置一个h头文件,我自己采用整个项目的C文件配置一个h头文件的方法,并且使用#ifndef/#define/#endif的宏来防止重复定义,方便各模块之间相互调用。
        4.一些常量(如圆周率PI)或者常需要在调试时修改的参数最好用#define定义,但要注意宏定义只是简单的替换,因此有些括号不可少。
       5.书写代码时要注意括号对齐,固定缩进,一个{}各占一行,我本人采用采用所进4个字符,应该还是比较合适的,if/for/while/do等语句各占一行,执行语句不得紧跟其后,无论执行语句多少都要加{},千万不要写成如下格式:
         for(i=0;i<100;i++){fun1();fun2();}
         for(i=0;i<100;i++){
         fun1();
         fun2();}
        而应该写成:
        for(i=0;i<100;i++)
        {
        fun1();
        fun2();
        }
        6.一行只实现一个功能,比如:
        a=2;b=3;c=4;宜改成:
        a=2; 
        b=3;
        c=4;
        7.重要难懂的代码要写注释,每个函数要写注释,每个全局变量要写注释,一些局部变量也要写注释。注释写在代码的上方或者右方,千万不要写在下方(相信没有人写在左方吧:))。
        8.对各运算符的优先级有所了解记不得没关系,加括号就是,千万不要自作聪明说自己记得很牢。 
        9.不管有没有无效分支,switch函数一定要defaut这个分支。一来让阅读者知道程序员并没有遗忘default,并且防止程序运行过程中出现的意外(健壮性)。
        10.变量和函数的命名最好能做到望文生义。不要命名什么x,y,z,a,sdrf之类的名字。
        11.函数的参数和返回值没有的话最好使用void
        12.goto语句:从汇编转型成C的人很喜欢用goto,但goto是C语言的大忌,但是老实说,程序出错是程序员自己造成的,不是goto的过错;本人只推荐一种情况下使用goto语句,即从多层循环体中跳出。
        13.一些常数和表格之类的应该放到code去中以节省RAM
        14.程序编完编译看有多少code多少data,注意不要使堆栈为难。
        15.程序应该要能方便的进行测试,其实这也与编程的思维有关;一般有三种:一种是自上而下先整体再局部一种是自下而上先局部再整体还有一种是结合两者往中间凑。我的做法是现大概规划一下整个编程,然后一个模块模块独立编程,每个模块调试成功再拼凑在一块调试。我建议:如果程序不大,可以直接用一个文件直接编,如果程序很大,宜采用自上而下的方式,但更多的是那种处在中间的情况,宜采用自下而上或者结合的方式。作为一门工具,最终的目的就是实现功能。在满足这个前提条件下,我们希望我们的程序能很容易地被别人读懂,或者能够很容易地读懂别人的程序,在团体合作开发中就能起到事半功倍之效。在网上请求帮助时,如能以规范的写法贴出程序,网友会比较容易地明白你的问题,则会比较快的得到网友的帮助,否则让人看上半天也不明所以然,这样就达不到预期的效果了。因此,为了便于源程序的交流,减少合作开发中的障碍,希望大家能够探讨一下C51的编程规范。把各人认为好的建议提出来,然后做一个总结,作为一种大家一致认同的规范,我认为将会是一件很有意义的事。我先提出一些自已的想法,以此抛砖引玉。 
         一、注释
        1,采用中文
        2,开始的注释
       文件(模块)注释内容:
       公司名称、版权、作者名称、修改时间、模块功能、背景介绍等,复杂的算法需要加上流程说明;
       函数开头的注释内容:
       函数名称、功能、说明输入、返回、函数描述、流程处理、全局变量、调用样例等,复杂的函数需要加上变量用途说明;
       3、程序中的注释内容
       修改时间和作者、方便理解的注释等。注释内容应简炼、清楚、明了,一目了然的语句不加注释。
       二、命名:
         命名必须具有一定的实际意义。
         1、常量的命名:全部用大写
         2、变量的命名:
        变量名加前缀,前缀反映变量的数据类型,用小写,反映变量意义的第一个字母大写,其他小写。
        其中变量数据类型:
        unsigned char前缀 ucsigned char 前缀 sc
        unsigned int前缀 uisigned int前缀 si
        unsigned long前缀 ulsigned long 前缀 sl 
        bit前缀 b指针前缀 p
        例:ucReceivData接收数据
        3、结构体命名:
        4、函数的命名:
       函数名首字大写,若包含有两个单词的每个单词首字母大写。
       函数原型说明包括:引用外来函数及内部函数,外部引用必须在右侧注明函数来源:模块名及文件名, 内部函数,只要注释其定义文件名;





关键词: 收集     语言     编程     规范     程序     模块     一个     文件         

工程师
2009-05-04 14:03:47     打赏
2楼

学习了很多


高工
2009-05-04 14:05:30     打赏
3楼
恩,看到了,所以为了方便大家阅读,我把重点语句和关键字词画了出来

助工
2009-05-04 14:29:09     打赏
4楼
写程序,是要养成这样好的习惯,好的方法,好的思路,才能写出高质量的代码,规范的程序,做出来的产品也好!

助工
2009-05-04 14:44:18     打赏
5楼
LZ太尽职尽责了,感动ing

工程师
2009-05-04 14:57:51     打赏
6楼

写的很好,“把重点语句和关键字词画出来”楼主真用心啊


菜鸟
2009-05-04 18:27:47     打赏
7楼

看到咯!习惯是最重要的!


共7条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]