一、创建具有很强内聚力的模块
过程的重要性往往比模块的重要性更容易理解,过程是指执行一个统一函数的一段代码。但是对于许多开发人员来说,模块的作用比较难于弄清。模块常常被错误地视为是一个仅仅用于存放过程的容器。有些开发人员甚至把这种思路作了进一步的发挥,将他们的所有过程放入单个模块之中。人们之所以不能正确地认识模块的功能,原因之一是模块的实现实际上并不影响程序的执行。当一个工程被编译时,如果所有过程都放在单个模块中或者放在几十个模块中,这没有任何关系。虽然模块的数量对代码的执行并无太大的影响,但是当创建便于调试和维护的代码时,模块的数量有时会带来很大的影响。
模块应该用来将相关的过程组织在一起。在大多数应用程序中,按照某种共性来组织过程是相当容易的。当模块包含一组紧密关联的过程时,该模块可以说具有强大的内聚力。当模块包含许多互不相关的过程时,该模块便具有较弱的内聚力。应该努力创建内聚力比较强的模块。一个非常大的VB工程可能只包含十几个模块,但是这些模块的组织结构应该非常完善。创建模块时,应该知道"模块化"这个术语的含义是什么。模块的基本目的是创建相当独立的程序单元。从根本上来讲,模块可以添加给另一个工程,并且可以通过直接调用它的公用过程来使用它。这种通用模块并不依赖于全局数据或其他模块中的过程。
二、创建松散连接和高度专用的过程
VB能够非常容易地创建过程,但是这种简易性掩盖了创建完美过程需要高度技巧和科学性的问题。VB对过程所作的限制很少,它并不限制放入过程的语句数目,也不限制一个过程能够执行多少个任务。虽然VB并不强制实施这些限制,但是在这些方面我们应该做一些自我控制,这样才能创建更好的过程。
1、使所有过程都执行专门的任务
首先要记住,每个过程都应该执行一项特定的任务,它应该出色地完成这项任务。应该避免创建执行许多不同任务的过程。这常常需要具有一定的远见,因为究竟哪些成分构成一个任务,这并不总是十分明显。创建专用过程有许多好处。首先,调试将变得更加容易。创建专用过程的更重要的好处是可以按计划或者不按计划来修改代码。
2、尽量使过程成为自成一体的独立过程
除了尽量使过程成为专用过程外(这是合乎道理的),还应该尽量使之成为独立的过程。当一个过程依赖于对其他过程的调用时,称为与其他过程紧密连接的过程。紧密连接的过程会使调试和修改变得比较困难,因为它牵涉到更多的因素。当创建的过程依赖于较少的其他过程或者不需要调用其他过程时,那么它就是松散连接的过程。松散连接的过程优于紧密连接的过程,但是我们不可能使每个过程都成为独立的过程。尽管如此,我们应该尽量减少过程之间的连接关系。 三、模块和过程设计的原则
1、为过程和模块赋予表义性强的名字
为了使代码更加容易理解,最容易的方法之一是为我们的过程赋予表义性强的名字。函数名DoIt、GetIt和PrintIt的可读性很难与CalculateSalesTax、RetrieveUserID和PrintSpreadSheet相比。给过程正确地命名,可使程序工程的调试和维护工作大大改观。我们要认真对待过程命名的工作,不要为了减少键入操作量而降低过程的可理解度。给过程命名时应该大小写字母混合使用,定义过程名时不要使用缩写。这些都是初学者必须要牢记的。下面是一些例子:
不正确:
Private Function InvoicePost()As Boolean
Private Function PrintIt()As Boolean
Public Sub SaveItem()
Public Sub DeleteRecord()
正确:
Private Function PostInvoice()As Boolean
Private Function PrintSpreadsheet()As Boolean
Public Sub SavePicture()
Public Sub DeleteContact()
2、为每个过程赋予明确定义的作用域
作用域是指工程中的变量或过程的可视性。过程可以定义为拥有模块级作用域、全局作用域或友元作用域。当一个过程用Private关键字来说明时,便拥有模块级作用域,并且它只能用同一模块中的过程来调用。如果用关键字Public来说明一个过程,那么这个过程将拥有全局作用域,并且可以用工程中的任何模块来调用。此外,公用类模块的公用过程可用于外部程序。用Friend关键字说明的(公用类模块中的)过程将使该过程成为工程中的所有模块的公用过程,但是它不能使该过程成为外部程序的公用过程。创建过程时,始终都应显式地定义它的作用域。虽然不使用Public Private或Friend将无法定义一个过程,但是我们应该避免这样进行操作。
在许多情况下,我们不用Public、Private或Friend说明的过程实际上将作为模块级(专用)过程来使用。但是,如果不专门说明为专用过程,它们就会无意中创建为公用过程。通过为每个过程赋予一个明确定义的作用域,可以减少代码阅读者需要投入的工作量。另外,应该确保我们为过程赋予最有意义的作用域。如果一个过程只被同一模块中的另一个过程调用,那么请将它创建成专用过程。如果该过程是从多个模块中的多个过程中调用,请将该过程说明为公用过程。每个过程的定义都应该以Public、Private或Friend开头。如果现有的过程不带有这些关键字中的一个,那么我们就必须遍历工程,以便确定每个过程的作用域,并相应地修改其说明。
不正确:
Sub CalculatePOTotals( )
…
End Sub
正确:
Public Sub CalculatePOTotals( )
文章整理:西部数码--专业提供域名注册、虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!
相关文章
热点关注
- 在asp.net中为Web用户控件
- .NET3.5和VS2008中的ASP.N
- 对.NET Framework 反射的
- Asp.net Ajax 1.0 异步回
- ASP.NET2.0的控件状态和视
- 通过避免下列10个常见ASP.
- 中国地区三级联动下拉菜单
- 解析Asp.net中资源本地化
- 一个无刷新效果定时自动更
- 动态创建MSSQL数据库表存
- asp.net用url重写URLReWri
- 使用ASP.NET Atlas编写显
- 关于ASP.NET调用JavaScrip
- 使用ASP.Net Forms模式实
- asp.net ajax 使用updatep
- 优化ASP.NET应用程序性能
- ASP.NET中动态修改web.con
- ASP.NET中利用Crystal Rep
- asp.net如何生成图片验证
- 基于ASP.NET的Web动态控件
- 分享个极好的无刷新二级联
- asp.net 2.0 上传控件的使
- 创建ASP.NET监视服务器进
- Asp.net把UTF-8编码转换为
- 开发基于ASP.NET WebServi
- asp.net结合html,javascr
- asp.net 2.0下嵌套masterp
- 正则表达式提取数字
- 最新版FreeTextBox(版本3.
- 获取本机上配置好的Oracle
- ASP.Net全局变量的设置和
- VB几个有用的函数
- 用代码画折线图/柱形图/
- FCKeditor2.2 ASP.NET2.0
- 客户端回调实现gridView无
IDC资讯
虚拟主机
域名注册
托管租用
vps主机
智能建站
网站运营 建站经验 策划盈利 搜索优化 网站推广 免费资源
网站联盟 联盟新闻 联盟介绍 联盟点评 网赚技巧
行业资讯 业界动态 搜索引擎 网络游戏 门户动态 电子商务 广告传媒
网络编程 Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术 Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷 Internet Explorer
网页制作 FrontPages Dreamweaver Javascript css photoshop fireworks Flash
程序设计 Java技术 C/C++ VB delphi
网络知识 网络协议 网络安全 网络管理 组网方案 Cisco技术
操作系统 Win2000 WinXP Win2003 Mac OS Linux FreeBSD
网站运营 建站经验 策划盈利 搜索优化 网站推广 免费资源
网站联盟 联盟新闻 联盟介绍 联盟点评 网赚技巧
行业资讯 业界动态 搜索引擎 网络游戏 门户动态 电子商务 广告传媒
网络编程 Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术 Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷 Internet Explorer
网页制作 FrontPages Dreamweaver Javascript css photoshop fireworks Flash
程序设计 Java技术 C/C++ VB delphi
网络知识 网络协议 网络安全 网络管理 组网方案 Cisco技术
操作系统 Win2000 WinXP Win2003 Mac OS Linux FreeBSD




