| | | | | | | [文章信息] | | | 作者: | 陶刚编译 | | 时间: | 2003-07-29 | | 出处: | yesky | | 责任编辑: | 方舟 | |
| [文章导读] | | | 把实际的编程问题概括为五个简单的步骤,以及在设计应用程序时如何以这五个步骤作为出发点...... | |
| |
|
| | | |
|
|
|
|
|
横向改进
前面我表明了我喜欢把从顶部向下的宏观算法作为程序设计过程中的出发点。最基本的是在解决某个问题前你必须了解问题。但是了解用于解决问题的微观问题的时刻也会到来。随着我们的处理从程序的概貌转到细节,我们在增加视图的细节,或者说粒度。另一种说法是,我们从一般移动到了特殊。
我们能使用五个编程步骤作为设计过程的宏观视图的出发点。下一步,我们检阅每一步并提供每个步骤包含的更详细的信息。这个过程称为横向优化。有一个例子可以帮助我们了解这个过程。
假定你有一个用户,他拥有一个保存所有用户职位的数据库文件。这些职位按照授予职位的日期排序,保存在数据库中。但是该用户希望按照字母次序(基于该用户遇到的某个人的名字)查看职位。让我们看一看如何使用横向优化设计一个解决方案。
初始化步骤的横向改进
我们已经知道该用户有一个职位数据库。我们也知道他希望有一个按名字的字母次序排列的列表。这是算法的宏观视图。
既然这样,在初始化步骤中执行什么操作呢?很明显我们应该打开该职位数据库。在职位被排序后我们需要一个Visual Basic .NET窗体显示结果。因为我们知道数据库位于网络上,并且当该用户启动程序时我们能知道用户的名称和密码,因此我们认为事务很简单。有了这些信息后,我们首先作的横向优化可能如图1所示。
 图1:初始化步骤的横向改进
注意在图1中当我们从左边横向移到右边时细节是怎样增长的。在图1中,横向优化表现为需要完成事务的步骤的子程序或函数的列表。每个子程序完成一个特定的事务。
伪代码
我们可以使用伪代码进一步优化每个步骤。伪代码是程序描述的算法,它使用类似英语的语法。例如,我们可以看一看IsValidUser()程序并把它写为下面的伪代码:
IsValidUser() -_ If CurrentUserName Not in ValidUserList Display Invalid User Error Message Terminate Program Else Return ValidUserIDNumber End
注意这段伪代码是如何描述程序要做什么的,而且它不需要目前使用的编程语言的正式语法。伪代码不是基于语言的语法。伪代码是描述程序做什么的算法语句。
伪代码的实际的优点是,因为它与英语类似,因此你能够把它与设计阶段中的其它非编程用户共享,不管你是否正确解决问题。这种在设计的早期阶段与用户一起检查的处理方式对于你也有很大的好处。捕捉设计错误,在这个过程中改变程序可以防止大量的难以应付的困难。从开始就把用户包含进来会形成更好的程序,花费更少的时间,修改更少。它对于程序设计来说是双赢的。
一旦你明白了伪代码描述的程序的目的,把伪代码转换为实际的编程代码就很简单。好的设计使程序开发更容易。
我鼓励你这时候停止阅读,花费一点时间对我们程序的其它四步进行横向优化。你在试图为每种优化编写伪代码时可能遇到一些麻烦。虽然我意识到你们中的很多人没有花费时间这样作,但是有少数人还是会坚持的。相信我,值得在它上面花费力气。
|
|
|
|
|
|
|
|