导航: 老古网老古论坛XMOS公共讨论区XMOS开源项目区单片机程序设计嵌入式系统广告区域
→[原创]我自己总结的编程规范。。。吐血[幽游梦蝶]

 *第9243篇: [原创]我自己总结的编程规范。。。吐血

  
楼 主:幽游梦蝶 2003年3月24日09:07
 [原创]我自己总结的编程规范。。。吐血
本人幽游梦蝶从来不认为是单片机高手,但一向对自己的C51编程很自信;公司里一些项目常要俺编程,总算积累了一点经验,因为很多也是各位同仁给予,故不敢独享,说得不好之处,敬请纠正指出:

    编程首要是要考虑程序的可行性,然后是可读性、可移植性、健壮性以及可测试性。这是总则。但是很多人忽略了可读性、可移植性和健壮性(可调试的方法可能歌不相同),这是不对的。

1.当项目比较大时,最好分模块编程,一个模块一个程序,很方便修改,也便于重用和便于阅读。

2.每个文件的开头应该写明这个文件是哪个项目里的哪个模块,是在什么编译环境下编译的,编程者(/修改者)和编程日期,值得注意的是一定不要忘了编程日期,因为以后你再看文件时,会知道大概是什么时候编写的,有些什么功能,并且可能知道类似模块之间的差异(有时同一模块所用的资源不同,和单片机相连的方法也不同,或者只是在原有的模块上加以改进)。

3.一个C源文件配置一个h头文件或者整个项目的C文件配置一个h头文件,我自己采用整个项目的C文件配置一个h头文件的方法,并且使用#ifndef/#define/#endif的宏来防止重复定义,方便各模块之间相互调用。

4.一些常量(如圆周率PI)或者常需要在调试时修改的参数最好用#define定义,但要注意宏定义只是简单的替换,因此有些括号不可少。

5.不要轻易调用某些库函数,因为有些库函数代码很长(我是反对使用printf之类的库函数的,但是是一家之言,并不勉强各位)。

6.书写代码时要注意括号对齐,固定缩进,一个{}各占一行,我本人采用采用所进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();
}

7.一行只实现一个功能,比如:
   a=2;b=3;c=4;宜改成:
   a=2;
   b=3;
   c=4;

8.重要难懂的代码要写注释,每个函数要写注释,每个全局变量要写注释,一些局部变量也要写注释。注释写在代码的上方或者右方,千万不要写在下方(相信没有人写在左方吧:))。

9.对各运算符的优先级右所了解,记不得没关系,加括号就是,千万不要自作聪明说自己记得很牢。

10.不管有没有无效分支,switch函数一定要defaut这个分支。一来让阅读者知道程序员并没有遗忘default,并且防止程序运行过程中出现的意外(健壮性)。

11.变量和函数的命名最好能做到望文生义。不要命名什么x,y,z,a,sdrf之类的名字。

12.函数的参数和返回值没有的话最好使用void。

13.goto语句:从汇编转型成C的人很喜欢用goto,但goto是C语言的大忌,但是老实说,程序出错是程序员自己造成的,不是goto的过错;本人只推荐一种情况下使用goto语句,即从多层循环体中跳出。

14.指针是C语言的精华,但是在C51中我个人认为少用为妙,一来有时反而要花费多的空间,还有在对片外数据进行操作时会出错(可能是时序的问题)。

15.一些常数和表格之类的应该放到code去中以节省RAM。

16.程序编完编译看有多少code多少data,注意不要使堆栈为难。

17.程序应该要能方便的进行测试,其实这也与编程的思维有关;一般有三种:一种是自上而下先整体再局部;一种是自下而上先局部再整体;还有一种是结合两者往中间凑。我的做法是现大概规划一下整个编程,然后一个模块模块独立编程,每个模块调试成功再拼凑在一块调试。我建议:如果程序不大,可以直接用一个文件直接编,如果程序很大,宜采用自上而下的方式,但更多的是那种处在中间的情况,宜采用自下而上或者结合的方式。

  
2楼:Kuang-chingTsui 2003年3月24日09:12
 很好,要是缩格避免使用空格键,而规定使用“Tab"键会更好,你说呢?
这样可以避免,片幅大的源程序缩格不齐的情况。
  
3楼:幽游梦蝶 2003年3月24日09:18
 也不一定
也不一定,因为有些人喜欢的字体大小不同,编译环境界面不同,甚至显示器的大小不同和个人爱好不同都可能影响缩进,但推荐使用TAB
  
4楼:Kuang-chingTsui 2003年3月24日09:19
 对,推荐使用Tab.
  
5楼:nobody 2003年7月23日11:53
 我还是习惯用2个空格,
为了让它少缩一点,不然层数比较多时就就缩的太厉害了,常常左边是空白,右边又写不下.
  
6楼:tm1300 2003年3月24日13:05
 附和(好东西分享),编码规范(我们的)
由于转换为PDF文件显示效果太次,所以用压缩形式上传,希望对您有帮助
点击浏览该文件
  
7楼:phoibos 2003年11月21日13:42
 hao wen
  
8楼:amwmqj 2003年10月10日15:23
 好东西,多谢
好东西,多谢
  
9楼:nobody 2003年7月23日12:21
 非常好!收藏一下先.
  
10楼:arcs 2003年7月23日11:35
 谢谢。
  
11楼:xuyunsong 2003年5月9日09:49
 都good
  
12楼:supercboy 2003年5月6日17:42
 我下载后怎么都是乱码压?![em07]
我下载后怎么都是乱码压?!
  
13楼:幽游梦蝶 2003年3月24日14:09
 我所谓的“规范”和你们的比起来,真是小巫见大巫,惭愧惭愧
  
14楼:tm1300 2003年3月25日09:02
 好东西大家分享嘛,客气了。
那时我们电气开发部针对C51定的使用规范,算是抛砖引玉吧
  
15楼:rockery 2003年3月26日10:42
 我下载不了,能否Email一份到:rockery_hisun@citiz.net!谢谢!!
我下载不了,能否Email一份到:rockery_hisun@citiz.net!谢谢!!
  
16楼:tm1300 2003年3月26日13:35
 已经发送,请接收
  
17楼:Kuang-chingTsui 2003年3月26日13:52
 麻烦给我发一份,to
kct2000@163.com
Thanks
  
18楼:独角 2003年3月26日17:02
 既然大家喜欢,我看你还是把它贴上来,省得一个一个跟你要。
  
19楼:Kuang-chingTsui 2003年3月26日17:07
 TM1300 :发一份给我好吗? kct2000@163.com  ,Thanks


  
20楼:linqingxuan 2003年3月26日19:46
 不错
你们的编码规范我看过了,写得真不错,我们公司的硬件部门正在创建中,拿你的来改改作为我们部门的规章应该不会侵犯版权吧?

>>>>>>对该主题发表你的看法

本主题贴数29,分页: [第1页] [第2页]


[上一篇主题]:老古兄你能帮我吗!有没有关于红外线接收集成的资料,最好是A1261的,谢谢你了。

[下一篇主题]:请问:学习DSP从何处着手????