﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-JAVA-文章分类-CVS</title><link>http://www.blogjava.net/hitlang/category/15681.html</link><description>学以致用</description><language>zh-cn</language><lastBuildDate>Fri, 02 Mar 2007 06:35:53 GMT</lastBuildDate><pubDate>Fri, 02 Mar 2007 06:35:53 GMT</pubDate><ttl>60</ttl><item><title>CVS&amp;编程规范学习笔记</title><link>http://www.blogjava.net/hitlang/articles/71861.html</link><dc:creator>liulang</dc:creator><author>liulang</author><pubDate>Mon, 25 Sep 2006 15:24:00 GMT</pubDate><guid>http://www.blogjava.net/hitlang/articles/71861.html</guid><wfw:comment>http://www.blogjava.net/hitlang/comments/71861.html</wfw:comment><comments>http://www.blogjava.net/hitlang/articles/71861.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/hitlang/comments/commentRss/71861.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/hitlang/services/trackbacks/71861.html</trackback:ping><description><![CDATA[
		<p>2004-11-19       星期五         晴</p>
		<p>1.  CVS(Concurrent Version System)安装示例<br />答：1) 下载地址：<a href="ftp://ftp.sunfreeware.com/pub/freeware/sparc/8/cvs-1.11.5-sol8sparc-local.gz">ftp://ftp.sunfreeware.com/pub/freeware/sparc/8/cvs-1.11.5-sol8sparc-local.gz</a>;<br />    2) 包解压：%gunzip cvs-1.11.5-sol8-sparc-local.gz;<br />    3) 安装：. 超级用户登录：%su -<br />             . 使用pkgadd进行安装：#pkgadd -d cvs-1.11.5-sol8-sparc-local</p>
		<p>2.  CVS功能<br />答：1) 并行版本控制系统<br />       . 一个程序的多个版本控制和管理;<br />       . 同一个程序可以被多个程序员修改;<br />    2) 源码备份系统<br />       . 很好的备份系统;<br />       . 记录你修改了哪些内容;</p>
		<p>3.  构建你的CVS系统<br />答：1) 登录CVS<br />       cvs login(在CVSROOT变量指定的目录使用命令：source .cshrc)<br />    2) 建立一个新的项目<br />       . 建立一个新的目录<br />         make netct<br />         cd netct<br />       . 在你的home路径中建立项目目录<br />         %cvs import -m "项目说明字符串" 项目名称 v_0 start<br />         %cd ..<br />         %cvs checkout 项目名称         /* only first time */<br /> <br />4.  在CVS仓库中进行改变<br />答：1) 加入一个新文件<br />       %cvs add file.c<br />    2) 进行持久改变<br />       %cvs commit [file.c]   /*commit后无具体文件，则提交所有未提交的文件*/</p>
		<p>5.  查看文件状态<br />答：1) 查看所有文件的状态<br />       %cvs status<br />    2) 查看指定文件的状态<br />       %cvs status file.c<br />    3) 四种可能的状态<br />       . Up-to-date: 本地文件和CVS仓库中文件完全一致;<br />       . Locally Modified: 本地文件比CVS仓库中文件新，需将本地文件commit入仓库中;<br />       . Needing Patch: CVS仓库中文件比本要文件新，需将仓库中文件update至本地中;<br />       . Needs Merge: CVS仓库和本地文件均有新东西。解决办法，先commit，再update，最后用vi调整文件中更新的先后顺序;</p>
		<p>6.  同步更新状态<br />答：1) 同步所有文件<br />       %cvs update<br />    2) 同步指定文件状态<br />       %cvs update file.c<br />    3) 同步指定文件指定版本状态<br />       %cvs update -r 1.2 file.c  /*一旦取得以前版本，该文件便不能再被cvs所管理, 这时可作为一个新文件进行管理*/</p>
		<p>7.  高级命令<br />答：1) 显示指定文件每行修改的版本号<br />       %cvs annotate file.c<br />    2) 显示文件的历史注释信息(在提交的时候所填写的内容)<br />       %cvs log file.c<br />    3) 查看整个项目所有文件最后修改的版本号<br />       %cvs rlog netct<br />    4) 从cvs仓库中移除一个文件<br />       %cvs remove file.c       /*形式上删除，物理上没有删除*/<br />    5) 从cvs仓库中删除一个目录<br />       %cvs release netct</p>
		<p> </p>
		<p> </p>
		<p> </p>
		<p> </p>
		<p> </p>
		<p>()</p>
		<p> </p>
		<p> </p>
		<p> </p>
		<p> </p>
		<p> </p>
		<p> </p>
		<p> </p>
		<p> </p>
		<p> </p>
<img src ="http://www.blogjava.net/hitlang/aggbug/71861.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/hitlang/" target="_blank">liulang</a> 2006-09-25 23:24 <a href="http://www.blogjava.net/hitlang/articles/71861.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>CVS&amp;PG</title><link>http://www.blogjava.net/hitlang/articles/71860.html</link><dc:creator>liulang</dc:creator><author>liulang</author><pubDate>Mon, 25 Sep 2006 15:22:00 GMT</pubDate><guid>http://www.blogjava.net/hitlang/articles/71860.html</guid><wfw:comment>http://www.blogjava.net/hitlang/comments/71860.html</wfw:comment><comments>http://www.blogjava.net/hitlang/articles/71860.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/hitlang/comments/commentRss/71860.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/hitlang/services/trackbacks/71860.html</trackback:ping><description><![CDATA[
		<p>目标<br />  CVS安装<br />  CVS功能<br />  CVS结构<br />  怎样使用CVS<br />  相关技术<br />  <br />4. CVS资源<br />  <a href="http://www.cvshome.org">http://www.cvshome.org</a><br />  <a href="http://www.loria.fr/~molli/cvs-index.html">http://www.loria.fr/~molli/cvs-index.html</a><br />  <a href="http://www.sunfreeware.com">http://www.sunfreeware.com</a><br />  发送邮件给<a href="mailto:info-cvs-request@gnu.org">info-cvs-request@gnu.org</a>以加入info-cvs邮件列表<br />  CVS使用网社团——comp.software.config-mgmt</p>
		<p>5. CVS样例安装<br />  从因特网下载CVS二进制版本，在浏览器中键入<br />  <a href="ftp://ftp.sunfreeware.com/pub/freeware/sparc/8/cvs-1.11.5-sol8-sparc-local.gz">ftp://ftp.sunfreeware.com/pub/freeware/sparc/8/cvs-1.11.5-sol8-sparc-local.gz</a><br />  解压该包<br />  %gunzip cvs-1.11.5-sol8-sparc-local.gz<br />  安装CVS<br />  1.成为超级用户<br />    %su-<br />  2.使用pkgadd安装<br />    #pkgadd -d cvs-1.11.5-sol8-sparc-local<br />    <br />6. CVS本地配置<br />  新建一个目录并授权给想使用它的人访问权，<br />  #mkdir /users/cvs<br />  #chmod 777 /users/cvs<br />  初始化CVS储藏室<br />  #cvs -d /users/cvs init<br />  以普通用户登录并设置CVS环境<br />  为C外壳用户加入setenv CVSROOT /users/cvs到.cshrc<br />  为其它外壳用户加入CVSROOT=/users/cvs; export CVSROOT到.profile<br />  <br />7. CVS网络样例服务器配置<br />  1.成为超级用户<br />  2.向/etc/services中加入一行cvspserver 2401/tcp<br />  3.加入一行tcp不等待流源▲/export/home/openlab/cvs/bin/cvs cvs -f -<br />    -allow-root=/export/home/openlab/cvs pserver到/etc/inetd.conf<br />  4.发送信号HUP给超进程inetd<br />    #pkill -HUP inetd<br />  5.建立CVS小组和CVS用户<br />  6.成为CVS用户和初始化CVS储藏室▲<br />    %setenv<br />    CVSROOT=:pserver:cvs@openlab.ca:/export/home/openlab/cvs<br />    %cvs init<br />  注：▲ stream tcp nowait root详见TCP/IP协议<br />      ▲ 团队开发的源代码(共享的未发布版本)池</p>
		<p>8. 空白<br />    <br />9. CVS网络样例服务器配置(续)<br />   使用户可访问$CVSROOT<br />   %chmod 777 /export/home/openlab/cvs<br />   添加用户到$CVSROOT/CVSROOT/writers和$CVSROOT/CVSROOT/passwd<br />   <br />10. CVS客户机环境变量<br />    CVSROOT-说明告诉CVS储藏室在哪儿<br />     C外壳: setenv CVSROOT 储藏室目录<br />      例子：setenv CVSROOT:pserver:gzhu@openlab:/export/home/openlab/cvs<br />     其它外壳：CVSROOT=储藏室目录; export CVSROOT<br />      例子：CVSROOT=:pserver:gzhu@openlab:/export/home/openlab/cvs; export CVSROOT<br />    CVSEDITOR-说明哪个编辑器被用来编辑注释<br />     C外壳：setenv CVSEDITOR /usr/bin/vi<br />     其它外壳：CVSEDITOR=/usr/bin/vi; export CVSEDITOR<br />    PATH-说明你可以从哪个目录找到CVS的命令<br />     C外壳：setenv PATH /export/home/openlab/cvs/bin:$PATH<br />     其它外壳：PATH=/export/home/openlab/cvs/bin:$PATH; export PATH<br />    MANPATH-说明CVS在线指南的位置<br />     C外壳：setenv MANPATH /export/home/openlab/cvs/man:$MANPATH<br />     其它外壳：MANPATH=/export/home/openlab/cvs/man:$MANPATH; export MANPATH<br />     <br />11. C外壳脚本例子(.cshrc)<br />  <a href="mailto:#@(#)cshrc">#@(#)cshrc</a> 1.11 89/11/29 SMI    <br />  stty erase ^H<br />  umask 022<br />  setenv CVSROOT :pserver:gzhu@openlab:/exporthome/openlab/cvs<br />  setenv CVSEDITOR /usr/bin/vi<br />  setenv CC /usr/local/bin/gcc<br />  setenv CCC /usr/local/bin/g++<br />  setenv ORACLE_BASE /tarenadb<br />  setenv ORACLE_HOME /tarenaora/software/9.0.1<br />  set path=(/export/home/openlab/cvs/bin /usr/local/bin /usr/openwin/bin /usr/j2se/bin<br />  /tarenaapp/j2sdkee1.3.1/bin /usr/bin /usr/sbin /usr/ucb ${ORACLE_HOME}/bin /usr/ccs/bin /etc.) <br />  setenv JAVA_HOME /usr/j2se<br />  setenv JDK_HOME /usr/j2se<br />  setenv J2EE_HOME /tarenaapp/j2sdkee1.3.1<br />  setenv OPENWINHOME /usr/openwin<br />  setenv LD_LIBRARY_PATH /usr/lib:/usr/local/lib:/usr/dt/lib:/usr/openwin/lib:${ORACLE_HOME}/lib<br />  setenv ORACLE_SID TARENADB<br />  setenv MANPATH /usr/share/man:/usr/openwin/share/man:/usr/openwin/man:/usr/dt/share/man:/usr/dt/man:/usr/bin/man:<br />  /usr/perl5/5.00503/man:/usr/perl5/man:/usr/man:/usr/apache/man:/usr/j2se/man:/usr/local/man:/export/home/openlab/cvs/man<br />  set cdpath=$HOME<br />  if($?prompt)then<br />   set history=32<br />   <br />12. B外壳脚本例子(.profile)<br />  <a href="mailto:#@(#)cshrc">#@(#)cshrc</a> 1.11 89/11/29 SMI    <br />  stty erase ^H<br />  umask 022<br />  CVSROOT=:pserver:gzhu@openlab:/exporthome/openlab/cvs<br />  CVSEDITOR=/usr/bin/vi<br />  CC=/usr/local/bin/gcc<br />  CCC=/usr/local/bin/g++<br />  ORACLE_BASE=/tarenadb<br />  ORACLE_HOME=/tarenaora/software/9.0.1<br />  PATH=(/export/home/openlab/cvs/bin /usr/local/bin /usr/openwin/bin /usr/j2se/bin<br />  /tarenaapp/j2sdkee1.3.1/bin /usr/bin /usr/sbin /usr/ucb ${ORACLE_HOME}/bin /usr/ccs/bin /etc.) <br />  JAVA_HOME=/usr/j2se<br />  JDK_HOME=/usr/j2se<br />  J2EE_HOME=/tarenaapp/j2sdkee1.3.1<br />  OPENWINHOME=/usr/openwin<br />  LD_LIBRARY_PATH=/usr/lib:/usr/local/lib:/usr/dt/lib:/usr/openwin/lib:${ORACLE_HOME}/lib<br />  ORACLE_SID=TARENADB<br />  MANPATH=/usr/share/man:/usr/openwin/share/man:/usr/openwin/man:/usr/dt/share/man:/usr/dt/man:/usr/bin/man:<br />  /usr/perl5/5.00503/man:/usr/perl5/man:/usr/man:/usr/apache/man:/usr/j2se/man:/usr/local/man:/export/home/openlab/cvs/man<br />  export CVSROOT CVSEDITOR CC CCC ORACLE_BASE ORACL_HOME PATH JAVA_HOME J2EE_HOME JDK_HOME LD_LIBRARY_PATH ORACLE_SID MANPATH<br />  <br />13. CVS功能<br />  协作版本控制系统<br />   多版本<br />   多程序员<br />  源代码备份系统<br />   备份<br />   改动记录<br />   <br />14. CVS结构<br />  文件-文件服务器----CVS服务器-CVS客户机   <br />  <br />15. 贮藏室结构<br />  $CVSROOT<br />   +yoyodyne<br />   | +-tc<br />   | |  |<br />   | |  |--Makefile,v <br />      |--backend.c,v<br />      |--driver.c,v<br />      |--frontend.c,v  <br />      |--parser.c,v<br />      |--man<br />      |  |<br />      |   +tc.1,v<br />      |<br />      |--testing<br />         |<br />         +-testpgm.t,v<br />         +-test2.t,v<br />         <br />16. 建造你的CVS系统<br />  登录CVS<br />  %cvs login<br />  设立一个新工程<br />   1.建一个目录<br />    %mkdir nnm<br />    %cd nnm<br />   2.在你自已的目录里建一个工程<br />    %cvs import -m "network node management" nnm v_0_0_1 start<br />    %cd<br />    %cvs checkout nnm  /* only first time */         <br />  <br />17. 在贮藏室中修改<br />  添加一个新文件<br />  %cvs add file.c<br />  作一个永久改变<br />  %cvs commit [file.c]<br />  <br />18. 检查状态<br />  检查所有文件的状态<br />  %cvs status<br />  检查某个文件的状态<br />  %cvs status file.c  <br />  四种可能的状态<br />  Up-to-date: 最新版本      <br />  Locally Modified: 未提交的改动<br />  Needing Patch: 其它人已提交的改动<br />  Needs Merge: 你和其它人的改动<br />  <br />19. 贮藏室的同步状态<br />  同步所有文件<br />  %cvs update<br />  同步一个指定文件的最近状态<br />  %cvs update file.c<br />  同步一个指定文件的指定状态<br />  %cvs update -r 1.2 file.c<br />  <br />20. CVS工作流<br />  (图略)  <br />  <br />21. 开发环境<br />  (图略)  <br />  <br />22. 高级命令<br />  显示最近版本行被修改过<br />   %cvs annotate file.c<br />  打印出文件的历史信息  <br />   %cvs log file.c<br />  显示最近版本模块被修改过<br />   $cvs rannotate netct8  <br />  打印出模块的历史信息   <br />  %cvs rlog netct8<br />  从贮藏室删除一个入口<br />   %cvs remove file.c<br />  从贮藏室释放一个模块<br />   %cvs release netct8<br />   <br />23. 从CVS系统检出▲    <br />  外检<br />  %cvs logout<br />  注：▲ 任何一款版本控制系统的基本功能，检出(check out)是指向外发布代码，检入(check in)则是指从外引进代码。<br />  <br />24. 相关技术<br />  SCCS<br />   源代码控制系统<br />  RCS<br />   修正控制系统<br />   <br />1. 软件工程师培训系列教材<br />     编程规范<br />     <br />2. 编程规范</p>
		<p>3. 概述<br />  基本要求<br />  可读性要求<br />  结构化要求<br />  正确性与容错性要求<br />  可重用性要求<br />  命名规范<br />  注释规范<br />  编程风格<br />  <br />4. 总则<br />   程序设计绝对是一门艺术，而不仅仅是一门技术。<br />   程序设计的出发点是给别人看，可读、易理解、好维护，<br />   如果你的程序只能自己来维护，到你离开这个程序时，你的程序也就与你一起离开了这个世界。<br />   <br />5. 模块1：编程要求</p>
		<p>6. 基本要求<br />  程序结构清晰简单易懂，单个函数的程序行数不得超过100行。<br />  打算干什么，要简单，直接了当，代码精简，避免垃圾程序。<br />  尽量使用标准库函数和公共函数<br />  不要随意定义全局变量，尽量使用局部变量<br />  使用括号以避免二义性<br />  <br />7. 可读性要求     <br />  可读性第一，效率第二。<br />  保持注释与代码完全一致<br />  每个源程序文件，都有文件头说明，说明规格见规范<br />  每个函数，都有函数头说明，说明规格见规范<br />  主要变量(结构、联合、类或对象)定义或引用时，注释能反映其含义<br />  常量定义(DEFINE)有相应说明<br />  <br />8. 可读性要求<br />   处理过程的每个阶段都有相关注释说明<br />   在典型算法前都有注释<br />   利用缩进来显示程序的逻辑结构，缩进量一致并以Tab键为单位<br />   循环、分支层次不要超过五层<br />   注释可以与语句在同一行，也可以在上行<br />   <br />9. 可读性要求<br />   空行和空白字符也是一种特殊的注释<br />   一目了然的语句不加注释<br />   注释的作用范围可以为：定义、引用、条件分支以及一段代码<br />   注释行数(不包括程序头和函数头说明部分)应占总行数的1/5到1/3<br />   <br />10. 结构化要求   <br />   禁止出现两条等价的支路<br />   禁止GOTO语句<br />   用IF语句来强调只执行两组语句中的一组。禁止ELSE GOTO和ELSE RETURN<br />   用CASE实现多路分支</p>
		<p>11. 结构化要求      <br />  避免从循环引出多个出口<br />  函数只有一个出口<br />  不使用条件赋值语句<br />  避免不必要的分支<br />  不要轻易用条件分支去替换逻辑表达式<br />  <br />12. 正确性与容错性要求<br />  程序首先是正确，其次是优美<br />  无法证明你的程序没有错误，因此在编写完一段程序后，应先回头检查<br />  改一个错误时可能产生新的错误，因此在修改前首先考虑对其它程序的影响<br />  所有变量在调用前必须被初始化<br />  <br />13. 正确性与容错性要求<br />  对所有的用户输入，必须进行合法性检查<br />  不要比较浮点数的相等，如：10.0*0.1 == 1.0，不可靠<br />  程序与环境或状态发生关系时，必须主动去处理发生的意外事件，如文件能否逻辑锁定，打印机是否联机等<br />  单元测试也是编程的一部分，提交联调测试的程序必须通过单元测试<br />  <br />14. 可重用性要求<br />  重复使用的完成相对独立功能的算法或代码应抽象为公共控件或类<br />  公共控件或类应考虑OO思想，减少外界联系，考虑独立性或封装性<br />  公共控件或类应建立使用模板<br />  <br />15. 模块2：编程规范<br />  <br />16. 命名规范<br />  变量命名<br />  函数命名<br />  <br />17. 变量命名<br />  命名必须具有一定的实际意义，形式为xAbcFgh，x由变量类型确定，Abc、Fgh表示连续意义字符串，如果连续意义字符串仅两个，可都大写，如OK<br />  含义清晰，不易混淆<br />  不和其它模块、系统API的命名空间相冲突<br />  <br />18. 变量命名<br />  有意识的为变量名、宏名加上本模块的关键字，就不至于和其它模块、系统API的命名空间相冲突<br />   例如：宏的名称过短，如："DEBUG"或"_DEBUG"，很可能和别的模块、系统模块相冲突<br />  局部变量尤其是循环变量，使用约定俗成的i,j,k<br />  宏、常量、枚举enum，全部用大写字母<br />  全局变量加上前缀"g"，后面跟上首字母大写的单词，如：g_全局变量 g_bFlag<br />  <br />19. 函数命名                  <br />  函数原型说明包括引用外来函数及内部函数，外部引用必须在右侧注明函数来源、模块名及文件名，如是内部函数，只要注释其定义文件名<br />  第一个字母必须使用大写字母，要求用大小写字母组合规范函数命名，必要时可用下划线间隔，示例如下：<br />  void UpdateDB_Tfgd(TRACK_NAME); //Module Name: r01/sdw.c<br />  <br />20. 函数命名<br />  模块化<br />   某一功能，如果重复实现三遍以上，即应考虑模块化，将它写成通用函数，并向小组成员发布。同时也要尽可能利用其它人的现成模块。<br />   模块化的一些注意事项<br />   1. 设计好模块接口，用面向对象的观点看，包括：函数接口和变量接口<br />   2. 定义好接口以后不要轻易改动，并在模块开头(文件的开头或函数的开头)加以说明<br />   3. 不要在外部使用接口以外的其它函数或变量<br />   4. 注意全局变量也是一种接口<br />   5. 接口即是罗列出一个模块的所有的与外部打交道的变量、函数等<br />   <br />21. 格式规范<br />  缩进用Tab，不用空格<br />  一个Tab定义为四个空格<br />  标点符号的右边留一个空格(左括号除外)   <br />  赋值、判断、运算符号两边都要加一个空格<br />  空行也是注释，适当的空行使逻辑更清楚，函数内部不应该有连续空行，函数之间至少有两个连续空行<br />  <br />22. 注释规范<br />  文件注释<br />  函数注释<br />  变量注释<br />  其它<br />  <br />23. 文件注释<br />  文件开始注释内容包括：公司名称、版权、作者名称、时间、模块用途、背景介绍等，复杂的算法需要加上流程说明<br />  文件开头的注释模板<br />  /******************************************************************<br />  **文件名：  <br />  **版权：<br />  **创建人：<br />  **日期：<br />  **修改人：<br />  **日期：<br />  **描述：<br />  **<br />  **版本：<br />  **-----------------------------------------------------------------<br />  ******************************************************************/<br />  <br />24. 函数注释<br />  函数注释包括：输入、输出、函数描述、流程处理、全局变量、调用样例等，<br />  复杂的函数需要加上变量用途说明：<br />  函数开头的注释模板        <br />  /******************************************************************<br />  **函数名：  <br />  **输入：a, b, c<br />  **a---<br />  **b---<br />  **c---<br />  **输出：x---<br />  **x为1，表示...<br />  **x为0，表示...<br />  **功能描述：<br />  **全局变量：<br />  **调用模块：<br />  **作者：<br />  **日期：<br />  **修改：<br />  **日期：<br />  **版本：<br />  ******************************************************************/               <br />  <br />25. 同24，印刷错误</p>
		<p>26. 变量及其它<br />  变量：对于非通用的变量，请在定义时加以注释说明，变量定义尽可能放在最开始处。<br />  其它：函数内各功能模块，如：循环、流程的各分支等，尽可能多的加以注释<br />  <br />27. 编程风格<br />  严格采用梯形层次对应好各层次：<br />  int main()<br />  {<br />   int i, j;<br />   ......<br />   for(i == 0; i &lt; 100; i ++)<br />   {<br />    ......<br />    ......<br />    if(i == 0)<br />    {<br />     ......<br />     ......<br />    }<br />    ......<br />    ......<br />   }<br />   ......<br />  }</p>
		<p>28. 编程风格<br />  注意错误处理：<br />  编程中要考虑函数的各种执行情况，尽可能处理所有流程情况，将函数分两类：<br />  一类为与屏幕的显示无关  <br />  二类为与屏幕的显示有关<br />  <br />  对于与屏幕显示无关的函数，函数通过返回值来报告错误<br />  对于与屏幕显示无关的函数，函数要负责向用户发出警告，并进行错误处理<br />  <br />29. 编程风格<br />  错误处理代码一般放在函数末尾，如下(以VB程序为例)：  <br />   ......<br />   On Error Goto errHandle<br />   ......<br />   Exit Sub<br />  errHandle:<br />   Select Case Err<br />   Case 1:<br />    ...<br />   Case 2:<br />    ...<br />   Case Else:<br />    ...<br />   End Select<br />  End Sub<br />   对于通用的错误处理，可建立通用的错误处理函数，处理常见的通用的错误<br />   <br />30.  </p>
<img src ="http://www.blogjava.net/hitlang/aggbug/71860.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/hitlang/" target="_blank">liulang</a> 2006-09-25 23:22 <a href="http://www.blogjava.net/hitlang/articles/71860.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>