⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 edu1.htm

📁 一本关于如何养成良好编程风格的书籍
💻 HTM
📖 第 1 页 / 共 5 页
字号:
<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=gb_2312-80"><META NAME="Generator" CONTENT="Microsoft Word 97"><TITLE>VB Standard</TITLE></HEAD><BODY><FONT FACE="黑体" LANG="ZH-CN" SIZE=4><P ALIGN="CENTER">开发人员操作规程</P></FONT><FONT FACE="宋体" LANG="ZH-CN"><P ALIGN="JUSTIFY"></P><DIR><P ALIGN="JUSTIFY">1 VB选项参数的定义:</P><P ALIGN="JUSTIFY">&#9;选项能数的规范有两方面的意义:一方面是及时排除程序中存在的拼写错误、语法错误,及时保存程序的修改;另一方面是将所有开发人员的开发界面一致化,以避免开发人员在其它开发人员的电脑上工作时因选项不同而造成的差错。</P></DIR><OL><OL><P ALIGN="JUSTIFY"><LI>打开“工具”菜单,在第一页“编辑器”中选定所有选项,并在Tab宽度中输入4。代码缩进时,先选中要缩进的代码块,然后使用快捷键是Tab(右移)和Shift+Tab(左移);如果手工输入空格完成缩进,请以4个空格为单位。</LI></P><P ALIGN="JUSTIFY"><LI>在第二页“编辑器格式”中,不要修改任何选项,一律使用VB默认值,否则可能在其他人操作时因界面不一致,而产生操作失误。</LI></P><P ALIGN="JUSTIFY"><LI>在第三页“通用”中,清除“请求时编译”前的复选框(此时“后台编译”选项会变成灰色),以确保每次程序执行时都是全编译执行。</LI></P><P ALIGN="JUSTIFY"><LI>第四页“可连接的”,可按自己习惯设定,建议清除所有复选框,这样会编辑代码时代码窗口可获得最大的显示空间。</LI></P><P ALIGN="JUSTIFY"><LI>第五页“环境”中“启动程序时”中一定选择“提示保存改变”(第二项),这样每次程序被修改后再运行时,VB都会提示保存,避免对程序的修改因偶然因素而丢失。</LI></P><P ALIGN="JUSTIFY"><LI>第六页“高级”中各选项由开发人员按自己习惯定义,但要注意当使用SDI方式进行开发时,每次在设计环境中用鼠标拖动窗体都会导致窗体的StartUpPosition变为0-手动,原来在屏幕上居中(StartUpPosition为2-屏幕中心)的窗体运行时可能会改变位置。</LI></P></OL></OL><P ALIGN="JUSTIFY"></P><DIR><P ALIGN="JUSTIFY">2 快捷键的使用</P><P ALIGN="JUSTIFY">&#9;使用快捷键提高操作速度。</P></DIR></FONT><P ALIGN="RIGHT"><TABLE BORDER CELLSPACING=1 WIDTH=476><TR><TD WIDTH="21%" VALIGN="BOTTOM" HEIGHT=22><P ALIGN="JUSTIFY">F1</TD><TD WIDTH="79%" VALIGN="BOTTOM" HEIGHT=22><FONT FACE="宋体" LANG="ZH-CN"><P ALIGN="JUSTIFY">帮助</FONT></TD></TR><TR><TD WIDTH="21%" VALIGN="BOTTOM" HEIGHT=21><P ALIGN="JUSTIFY">F2</TD><TD WIDTH="79%" VALIGN="BOTTOM" HEIGHT=21><FONT FACE="宋体" LANG="ZH-CN"><P ALIGN="JUSTIFY">显示对象浏览器</FONT></TD></TR><TR><TD WIDTH="21%" VALIGN="BOTTOM" HEIGHT=21><P ALIGN="JUSTIFY">F4</TD><TD WIDTH="79%" VALIGN="BOTTOM" HEIGHT=21><FONT FACE="宋体" LANG="ZH-CN"><P ALIGN="JUSTIFY">查看当前选中控件的属性窗体</FONT></TD></TR><TR><TD WIDTH="21%" VALIGN="BOTTOM" HEIGHT=21><P ALIGN="JUSTIFY">F5</TD><TD WIDTH="79%" VALIGN="BOTTOM" HEIGHT=21><FONT FACE="宋体" LANG="ZH-CN"><P ALIGN="JUSTIFY">运行</FONT></TD></TR><TR><TD WIDTH="21%" VALIGN="BOTTOM" HEIGHT=21><P ALIGN="JUSTIFY">F7</TD><TD WIDTH="79%" VALIGN="BOTTOM" HEIGHT=21><FONT FACE="宋体" LANG="ZH-CN"><P ALIGN="JUSTIFY">由窗体设计切换到对应的代码窗体</FONT></TD></TR><TR><TD WIDTH="21%" VALIGN="BOTTOM" HEIGHT=21><P ALIGN="JUSTIFY">F8</TD><TD WIDTH="79%" VALIGN="BOTTOM" HEIGHT=21><FONT FACE="宋体" LANG="ZH-CN"><P ALIGN="JUSTIFY">单步执行</FONT></TD></TR><TR><TD WIDTH="21%" VALIGN="BOTTOM" HEIGHT=21><P ALIGN="JUSTIFY">Shift+F2</TD><TD WIDTH="79%" VALIGN="BOTTOM" HEIGHT=21><FONT FACE="宋体" LANG="ZH-CN"><P ALIGN="JUSTIFY">查看当前光标所在的变量或函数、子过程的定义</FONT></TD></TR><TR><TD WIDTH="21%" VALIGN="BOTTOM" HEIGHT=21><P ALIGN="JUSTIFY">Shift+F7</TD><TD WIDTH="79%" VALIGN="BOTTOM" HEIGHT=21><FONT FACE="宋体" LANG="ZH-CN"><P ALIGN="JUSTIFY">由代码窗体切换到对应的窗体设计界面</FONT></TD></TR><TR><TD WIDTH="21%" VALIGN="BOTTOM" HEIGHT=22><P ALIGN="JUSTIFY">Shift+F8</TD><TD WIDTH="79%" VALIGN="BOTTOM" HEIGHT=22><FONT FACE="宋体" LANG="ZH-CN"><P ALIGN="JUSTIFY">逐过程单步执行</FONT></TD></TR><TR><TD WIDTH="21%" VALIGN="BOTTOM" HEIGHT=21><P ALIGN="JUSTIFY">Ctrl+F5</TD><TD WIDTH="79%" VALIGN="BOTTOM" HEIGHT=21><FONT FACE="宋体" LANG="ZH-CN"><P ALIGN="JUSTIFY">全编译执行</FONT></TD></TR><TR><TD WIDTH="21%" VALIGN="BOTTOM" HEIGHT=21><P ALIGN="JUSTIFY">Ctrl+F</TD><TD WIDTH="79%" VALIGN="BOTTOM" HEIGHT=21><FONT FACE="宋体" LANG="ZH-CN"><P ALIGN="JUSTIFY">在代码窗体进行查找</FONT></TD></TR><TR><TD WIDTH="21%" VALIGN="BOTTOM" HEIGHT=22><P ALIGN="JUSTIFY">Ctrl+G</TD><TD WIDTH="79%" VALIGN="BOTTOM" HEIGHT=22><FONT FACE="宋体" LANG="ZH-CN"><P ALIGN="JUSTIFY">查看立即窗体</FONT></TD></TR><TR><TD WIDTH="21%" VALIGN="BOTTOM" HEIGHT=22><P ALIGN="JUSTIFY">Ctrl+R</TD><TD WIDTH="79%" VALIGN="BOTTOM" HEIGHT=22><FONT FACE="宋体" LANG="ZH-CN"><P ALIGN="JUSTIFY">查看工程窗口</FONT></TD></TR></TABLE></P><DIR><FONT FACE="宋体" LANG="ZH-CN"><P ALIGN="JUSTIFY">&#9;&#9;</P><P ALIGN="JUSTIFY"></P><P ALIGN="JUSTIFY"> </P></DIR></FONT><FONT FACE="黑体" LANG="ZH-CN" SIZE=4><P ALIGN="CENTER">开发部部门职能</P></FONT><FONT FACE="宋体" LANG="ZH-CN"><P ALIGN="JUSTIFY"></P><DIR><P ALIGN="JUSTIFY">1提供和维护开发所用的图片库。图片库的图片是由开发部管理人员共同确定过的具有一致风格的bmp或ico图片,大小为16*16或者32*32,本库内容主要用于窗体图标、工具条位图、TreeView和ListView等用到的图片或图标,其它背景图等由开发部管理视具体情况而定,不在本图片库范围之内。</P><P ALIGN="JUSTIFY"></P><P ALIGN="JUSTIFY">2 维护公司模板库。模板库内容是由开发部管理人员确认过的编程风格良好,可重用性强的程序段(如字符串处理的函数、中心错误处理例程等);完成某一相对独立功能的窗体(如权限控制、修改口令、数据库登录等窗体);公司内部统一使用的自编ActiveX控件;集中完成某一部分功能的具有工具性质的工程等(如按结构生成数据库、数据备份与恢复等工具性工程),模板中的例程应有较强可重用性,大多数情况下不须经过任何修改就可直接在程序中作用。模板库由开发部管理人员及时更新(新增和修改),更新时向每个开发人员发放更新部分的书面和电子文档说明;并且提供一个管理软件,分类管理和查询现有的模板内容,又方便公司人员迅速在模板库找到所需内容。开发人员在使用模板库时,应当以使用原有内容,不要自己编写已存在的例程,需要新例程时先在模板库内查询,如果有相应模板但功能无法完全完成所需功能,应向开发部管理人员提出书面申请以决定究竟是由开发都重新编写新例程,还是由开发部升级现有模板。</P><P ALIGN="JUSTIFY"></P><P ALIGN="JUSTIFY">3 内部常量和枚举常数的维护。开发部对于常用的工程中常用的数字值应予以常量化,用表意性强的常量来代替幻数,增强程序的可读性和可维护性;对于工程中常用的由几种情况中进行选择的数字值应予以枚举化,枚举量定义时,以Enum开头,后面紧跟表意性强的名字,在枚举结构中尽可能不采用强编码赋值,凡是已定义了枚举量的情况,开发人员在使用时将该变量定义为该枚举类型,一定不能使用幻数,而是使用枚举量。</P><P ALIGN="JUSTIFY"></P><P ALIGN="JUSTIFY">4 函数名称的定义。函数名称、子过程名称必须符合公司开发规范的要求(见后),一旦开发人员自己无法确定函数名,比如:不能找到合适的英文单词等,需书面请示开发部管理人员,由管理人员决定,不可擅自使用表意错误的单词或缩写或汉语拼音。</P><P ALIGN="JUSTIFY"></P><P ALIGN="JUSTIFY">5 界面风格的一致化。某功能使用何种控件完成,由开发部管理人员确定,开发人员不得擅自更换其它控件,如需更换请提出书面申请,由开发部管理人员认可。开发人员在使用运行时可见控件(不是Visible为false,而是和运行时不可见控件如Timer、ImageList等对立),应使用该控件的默认颜色,如认为确实需要修改,需书面请示开发部管理人员。</P><P ALIGN="JUSTIFY"></P><P ALIGN="JUSTIFY">6 公用控件的管理。提供公司公用的第三方控件的安装文件和使用说明,以及对未使用过该控件的开发人员进行技术培训。</P><P ALIGN="CENTER"></P><DIR></FONT><FONT FACE="黑体" LANG="ZH-CN" SIZE=4><P ALIGN="CENTER">设计模块和过程</P></FONT><FONT FACE="宋体" LANG="ZH-CN"><P ALIGN="JUSTIFY"></P></DIR></DIR><P ALIGN="JUSTIFY">1 创建具有强内聚力的模块</P><P ALIGN="JUSTIFY"></P><P ALIGN="JUSTIFY">过程的重要性往往比模块的重要性更容易理解,过程是指执行一个统一函数的一段代码。模块常被错误的视为是一个仅仅用于存放过程的容器。有些开发人员甚至把这种思路作了进一步的发挥,将他们的所有过程放入单个模块之中。</P><P ALIGN="JUSTIFY">之所以不能正确的认识模块的功能,原因之一是模块的实现实际上并不影响程序的执行。当一个工程被编译时,如果所有过程都放在单个模块中或者放在几十个模块中,这没有任何关系。虽然模块的数量对代码的执行并无太大的影响,但是当创建便于调试和维护的代码时,模块的数量有时会带来很大的影响。</P><P ALIGN="JUSTIFY">模块应该用来将相关的过程组织在一起。</P><P ALIGN="JUSTIFY">当模块包含一组紧密关联的过程时,该模块可以说具有强大的内聚力。当模块包含许多互不相关的过程时,该模块便具有较弱的内聚力。应该努力创建内聚力比较强的模块。</P><P ALIGN="JUSTIFY">大多数工程都包含许多并不十分适合与其他过程组合在一起的过程。在这种情况下,可以为这些不合群的过程创建一个综合性收容模块。</P><P ALIGN="JUSTIFY">创建模块时,应知道“模块化”这个术语的含义是什么。模块的基本目的是创建相当独立的程序单元。从根本上来讲,模块可以添加给另一个工程,并且可以通过直接调用它的公用过程来使用它。</P><P ALIGN="JUSTIFY"></P><P ALIGN="JUSTIFY">2、创建松散连接和高度专用的过程</P><OL><P ALIGN="JUSTIFY"><LI>使所有过程都执行专门的任务</LI></P><P ALIGN="JUSTIFY">每个过程都应执行一项特定的任务,它应出色的完成这项任务。应避免创建执行许多不同任务的过程。</P><P ALIGN="JUSTIFY">创建专用过程有许多好处。首先调试将变得更加容易。</P><P ALIGN="JUSTIFY"><LI>尽量使过程成为自成一体的独立过程</LI></P></OL><DIR><DIR><DIR><P ALIGN="JUSTIFY">当一个过程依赖于其他过程的调用时,称为与其他过程紧密连接的过程。紧密连接的过程会使调试和修改变得比较困难,因为它牵涉到更多的因素。松散连接的过程优于紧密连接的过程,但你不可能使每个过程都成为独立的过程。</P><P ALIGN="JUSTIFY">若要使过程具备较强的独立性,方法之一是尽量减少全局变量和模块级变量。</P><P ALIGN="JUSTIFY">创建过程时,设法将每个过程视为一个黑箱,其他例程不应要求了解该过程的内部工作情况,该过程也不应要求了解它外面的工程情况。这就是为什么你的过程应依靠参数而不应依靠全局变量的原因。</P><P ALIGN="JUSTIFY">创建专用过程时,请考虑下列指导原则:</P></DIR></DIR></DIR><OL TYPE="a"><OL TYPE="a"><OL TYPE="a"><OL TYPE="a"><P ALIGN="JUSTIFY"><LI>将复杂进程放入专用过程。如果应用程序使用复杂的数学公式,请考虑将每个公式放入它自己的过程中。这样使用这些公式的其他过程就不包含用于该公式的实际代码。这样也可以更容易发现与公式相关的问题。</LI></P><P ALIGN="JUSTIFY"><LI>将数据输入/输出(I/O)放入专用过程。</LI></P><P ALIGN="JUSTIFY"><LI>将专用过程中可能要修改的代码隔离。如果你知道某个进程经常变更,请将这个多变的代码放入专用过程,以便以后可以更容易的进行修改,并减少无意中给其他进程带来问题的可能性。</LI></P><P ALIGN="JUSTIFY"><LI>将业务规则封装在专用过程中。业务规则常属于要修改的代码类别,应与应用程序的其余部分隔开。其他过程不应知道业务规则,只有要调用的过程才使用这些规则。</LI></P></OL></OL></OL></OL><OL><OL><P ALIGN="JUSTIFY"><LI>扇入和扇出</LI></P><P ALIGN="JUSTIFY">当某个过程被许多其他过程调用(并因此而依赖于许多其他过程)时,就说明它是个高度扇入的过程,这是件好事。高度扇入的过程通常是封装好的过程,它支持代码复用的思路。如果一个过程要调用许多其他过程,而它又是个高度扇出的过程,那么情况就不那么好了。高度扇出意味着该过程要依赖于许多其他过程才能完成它的工作,换句话说,它是个紧密连接的过程。这使得程序的调式比较困难,因为寻找执行路径更加复杂。</P><P ALIGN="JUSTIFY"><LI>设计模块和过程时,要达到下列目的:</LI></P></OL></OL><DIR><DIR><DIR><P ALIGN="JUSTIFY">创建更加容易调试和维护的过程</P><P ALIGN="JUSTIFY">创建具有强大内聚力的模块</P><P ALIGN="JUSTIFY">创建高度专用的过程</P><P ALIGN="JUSTIFY">创建松散连接的过程</P><P ALIGN="JUSTIFY">尽量使过程具有独立性</P><P ALIGN="JUSTIFY">提高过程的扇入性</P><P ALIGN="JUSTIFY">降低过程的扇出性</P><P ALIGN="JUSTIFY"></P></DIR></DIR></DIR><P ALIGN="JUSTIFY">3.编程原则:</P><OL><P ALIGN="JUSTIFY"><LI>为过程和模块赋予表义性强的名字</LI></P></OL><DIR><DIR><DIR><P ALIGN="JUSTIFY">为了使代码更加容易理解,最容易的方法之一是为你的过程赋予表义性强的名字。函数名DoIt、GetIt的可读性很难与CalculateSalesTax、 RetrieveUserID相比。</P><P ALIGN="JUSTIFY">由缩写过程名组成的代码很难理解和维护,没有理由再这样做了。</P><P ALIGN="JUSTIFY">给过程正确的命名,可使程序工程的调试和维护工作大大的改观。请认真对待过程命名的工作,不要为了减少键入操作量而降低过程的可理解度。</P><P ALIGN="JUSTIFY">模块命名时应遵循如下原则:</P></DIR></DIR></DIR><OL TYPE="a"><OL TYPE="a"><P ALIGN="JUSTIFY"><LI>给过程命名时应大小写字母混合使用。如果句子全使用大写字母,那么阅读起来就非常困难,而大小写字母混合使用的句子,阅读起来就很容易。</LI></P><P ALIGN="JUSTIFY"><LI>定义过程名时不要使用缩写。如果你认为应用程序中的某些工程应使用缩写,那么请将这些情况加上注释,并确保每个人在所有时间内都使用这些缩写。决不要在某些过程中对某些单词进行缩写,而在别的过程中却不使用缩写。</LI></P></OL>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -