2101|0

362

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

如何能编好单片机的程序(2) [复制链接]

1、版权和版本
-------
好的程序员会给自己的每个函数,每个文件,都注上版权和版本。
对于C/C++的文件,文件头应该有类似这样的注释:
/********************************************************************
*
*  文件名:network.c
*
*  文件描述:网络通讯函数集
*
*  创建人: Hao Chen, 200323
*
*  版本号:1.0
*
*  修改记录:
*
********************************************************************/
而对于函数来说,应该也有类似于这样的注释:
/*============================================================
*
* 名:XXX
*
* 参  数:
*
*    type name [IN] : des
*
* 功能描述:
*
*    ..............
*
* 值:成功TRUE,失败FALSE
*
* 抛出异常:
*
* 作  者:ChenHao 2003/4/2
*
============================================================*/
这样的描述可以让人对一个函数,一个文件有一个总体的认识,对代码的易读性和易维护性有很大的好处。这是好的作品产生的开始。

2、缩进、空格、换行、空行、对齐
----------------
i) 缩进应该是每个程序都会做的,只要学程序过程序就应该知道这个,但是我仍然看过不缩进的程序,或是乱缩进的程序,如果你的公司还有写程序不缩进的程序员,请毫不犹豫的开除他吧,并以破坏源码罪起诉他,还要他赔偿读过他程序的人的精神损失费。缩进,这是不成文规矩,我再重提一下吧,一个缩进一般是一个TAB 键或是4个空格。(最好用TAB键)
ii) 空格。空格能给程序代来什么损失吗?没有,有效的利用空格可以让你的程序读进来更加赏心悦目。而不一堆表达式挤在一起。看看下面的代码:
  ha=(ha*128+*key++)%tabPtr->size;
  ha = ( ha * 128 + *key++ ) % tabPtr->size;
  有空格和没有空格的感觉不一样吧。一般来说,语句中要在各个操作符间加空格,函数调用时,要以各个参数间加空格。如下面这种加空格的和不加的:
  
if ((hProc=OpenProcess(PROCESS_ALL_ACCESS,FALSE,pid))==NULL){
}
if ( ( hProc = OpenProcess(PROCESS_ALL_ACCESS, FALSE, pid) ) == NULL ){
}
iii) 换行。不要把语句都写在一行上,这样很不好。如:
  for(i=0;i'9')&&(a<'a'||a>'z')) break;
  
  这种即无空格,又无换行的程序在写什么啊?加上空格和换行吧。  
  
  for ( i=0; i     if ( ( a < '0' || a > '9' ) &&
       ( a < 'a' || a > 'z' ) ) {
      break;
    }
  }
  好多了吧?有时候,函数参数多的时候,最好也换行,如:
  CreateProcess(
         NULL,
         cmdbuf,
         NULL,
         NULL,
         bInhH,
         dwCrtFlags,
         envbuf,
         NULL,
         &siStartInfo,
         &prInfo
         );
  条件语句也应该在必要时换行:
  
  if ( ch >= '0' || ch <= '9' ||
     ch >= 'a' || ch <= 'z' ||
     ch >= 'A' || ch <= 'Z' )
         
iv) 空行。不要不加空行,空行可以区分不同的程序块,程序块间,最好加上空行。如:
  HANDLE hProcess;
  PROCESS_T procInfo;
  /* open the process handle */
  if((hProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, pid)) == NULL)
  {
    return LSE_MISC_SYS;
  }
  memset(&procInfo, 0, sizeof(procInfo));
  procInfo.idProc = pid;
  procInfo.hdProc = hProcess;
  procInfo.misc |= MSCAVA_PROC;
  return(0);
         
此帖出自单片机论坛
点赞 关注
 

回复
举报
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表