建立子程序的步骤
这一章关心的是如何编写小规模程序,以及编写对各种规模项目都十分关键的程序的特定步骤。同时描述了从程序设计语言(PDL)到编码的转换过程。
程序设计语言(PDL)
方针:
用模拟英语的语句来精确描述每一个特定的操作。
避免使用最终语言程序的语句以及受到不必要程序语法语言规则的限制。
在设计意向这一个层次上写PDL。说明方法的意义,而不是描述如何用目标语言实现。
在足够低的层次上写出PDL,他几乎可以自动生成代码。如果PDL写的太简略,可能会在编码中忽略问题的细节。应该精确的使用PDL以方便编码。
设计子程序
1、给子程序命名:子程序应该有一个清楚、不引起异议的名字。如果给一个程序找一个好名字时感觉困难,这意味着对程序的功能还不十分清楚。在编写程序时,最好能够同时考虑如何测试。这对于进行单元测试工作是十分有益处的
2、考虑效率:一般来说分为两种情况。
第一种情况,性能不是十分重要,这时,应该把子程序作为高度模块化而且具有很强的可读性,以便在今后需要时很容易对其做出改变。如果模块化程度很高,就可以在需要时,用更好的算法或者汇编语言编写的子程序来代替速度较慢的程序而不影响其他部分。
第二种情况,大部分的程序中,性能十分的重要。这时,结构设计应该对子程序的运行速度和允许使用的内存做出规定,只要按照速度和空间指标设计子程序就可以了。如果速度和空间只有一个方面是主要的,则可以牺牲一个方面满足另一个方面。
除了上述指明的情况以外,不必浪费精力去考虑个别子程序的执行效率。优化的收益主要来自于高层设计,而不是个别子程序。只有在高层次设计某方面有缺陷时,才需要进行微观优化,而这点只在程序全部完成时才会知道。除非必要,不要浪费时间进行增量改进。
3、研究算法和数据结构。
4、编写PDL
5、编写工作应该从抽象到具体。一个子程序最抽象的部分便是最开始的注释部分,这部分将要说明要求于程序作什么:因此,首先应该写一个关于编写于程序目的的精确说明。编写这个说明也将帮助我们更清楚的理解这个子程序。如果在编写这部分说明时感觉困难,那么说明需要对这个子程序在整个软件中的地位和作为更深刻的理解。总之,如果感觉编写抽象说明时有困难,应该想到可能是某一个环节出了问题。
6、考虑数据:如果数据操作是程序的主要部分,那么在考虑程序的逻辑结构之前,考虑主要数据是必要的。如果在进行子程序的逻辑设计时,已经有了关键数据结构的定义,那么将是大有裨益的。
7、检查PDL:检查PDL更容易发现错误。而且如果在PDL这一个层次上都不能完全了解,那么在编码的阶段了解它的机会又能有多少呢。
8、逐步细化:要不断地细化PDL,并且对其作出进一个说明,直到你看到这样作是在浪费时间,再开始实际的编码工作。
子程序编码
编译子程序:如果编译过早,我们可能会产生“就只再编译一次”的压力,从而导致许多匆忙的、更容易错误的修改,反而浪费了风多的时间,所以在确认程序是正确的之前,不要急于开始编译。