首页 百科知识 程序设计风格及程序效率

程序设计风格及程序效率

时间:2022-10-09 百科知识 版权反馈
【摘要】:程序设计风格或编码风格是指在不影响程序正确性和效率的前提下,有效编排和合理组织程序的基本原则。若团队中的成员不注重自己的程序设计风格,则会严重影响与其他成员的合作和沟通,最终将可能导致软件质量上出现问题。为提高源程序的可读性和可维护性,需要对源代码进行文档化,即在程序中加入说明性注释信息。软件效率的高低是一个相对的概念,它与程序的简单性直接相关,不应因过分追求高效率而忽视了程序设计中的其他要求。

6.1.2 程序设计风格及程序效率

在选择了合适的程序设计语言和保证程序正确的前提下,在根据详细设计结果编写程序时还应注意使用某些编程技巧,力求使程序具有良好的风格和较高的效率。

一、程序设计风格

程序设计风格或编码风格是指在不影响程序正确性和效率的前提下,有效编排和合理组织程序的基本原则。一个具有良好编码风格的程序主要表现为可读性好、易测试、易维护。由于测试和维护阶段的费用在软件开发总成本中所占比例很大,因此程序设计风格的好坏直接影响着整个软件开发中成本耗费的多少。特别是在需要团队合作开发大型软件的时候,程序设计风格显得尤为重要。若团队中的成员不注重自己的程序设计风格,则会严重影响与其他成员的合作和沟通,最终将可能导致软件质量上出现问题。

为了编写出可读性好、易测试、易维护且可靠性高的程序,软件开发人员必须重视程序设计风格,具体体现在以下几个方面。

1.源程序文档化

为提高源程序的可读性和可维护性,需要对源代码进行文档化,即在程序中加入说明性注释信息。在修改程序时,不要忘记对相应的注释也要进行修改。

程序中的注释一般可按其用途分为两类:序言性注释和功能性注释。

(1)序言性注释。序言性注释一般位于模块的首部,用于说明模块的相关信息。主要包括:对模块的功能、用途进行简要说明;对模块的界面进行描述,如调用语句的格式、各个参数的作用及需调用的下级模块的清单等;对模块的开发历史进行介绍,如模块编写者的资料、模块审核者的资料及建立、修改的时间等;对模块的输入数据或输出数据进行说明,如数据的格式、类型及含义等。

(2)功能性注释。功能性注释位于源程序模块内部,用于对某些难以理解的语句段的功能或某些重要的标识符的用途等进行说明。比如如果设计了一个复杂数据结构,应使用注释说明在实现时这个数据结构的特点。

通过在程序中加入恰当的功能性注释可以大大提高程序的可读性和可理解性,对语句的注释应紧跟在被说明语句之后书写。需要注意的是,并不是对所有程序中的语句都要进行注释,太多不必要的注释反而会影响人们对程序的阅读。

2.标识符的命名及说明

编写程序必然要使用标识符,用于定义模块名、变量名、常量名、函数名、程序名、过程名、数据区名、缓冲区名等,特别是对于大型程序,使用的标识符可能成千上万。由于对程序中的标识符作用的正确理解是读懂程序的前提,因此,若编程者随心所欲地进行标识符的命名和说明,可能就会给阅读程序带来麻烦。

为了便于阅读程序时对标识符作用进行正确的理解,标识符的命名应注意以下几个问题:

(1)选用具有实际含义的标识符,如用于存放年龄的变量最好命名为age,用于存放学生信息的数组最好命名为student。若标识符由多个单词构成,则每个单词的第一个字母最好采用大写或单词间用下划线分隔,以利于对标识符含义的理解。

(2)为了便于程序的输入,标识符的名字不宜过长,通常不要超过八个字符。特别是对于那些对标识符长度有限制的语言编译系统来说,取过长的标识符名没有任何的意义。

(3)为了便于区分,不同的标识符不要取过于相似的名字。如student和students,很容易在使用或阅读时产生混淆。

由于程序中通常需要使用大量不同类型的标识符,为了使说明部分阅读起来更加清晰,在对其进行类型说明时应注意以下几点:

(1)应按照某种顺序分别对各种类型的变量进行集中说明,如,先说明简单类型,再说明指针类型,然后说明记录类型;对简单类型的变量进行说明时,可先说明整型,再说明实型,然后说明字符型等等。

(2)在使用一个说明语句对同一类型的多个变量进行说明时,应按照变量名中的字母顺序(a~z)对其进行排列。

3.语句的构造及书写

语句是构成程序的基本单位,语句的构造方式和书写格式对程序的可读性具有非常重要的决定作用。

为了使程序中语句的功能更易于阅读和理解,构造语句时应该注意以下几个问题:

(1)语句应简单直接,避免使用华而不实的程序设计技巧。

(2)对复杂的表达式应加上必要的括号使表达更加清晰。

(3)由于人的一般思维方式对逻辑非运算不太适应,因此在条件表达式中应尽量不使用否定的逻辑表示。

(4)为了不破坏结构化程序设计中结构的清晰性,在程序中应尽量不使用强制转移语句GOTO。

(5)为了便于程序的理解,不要书写太复杂的条件,嵌套的重数也不宜过多。

(6)为了缩短程序的代码,在程序中应尽可能地使用编译系统提供的标准函数。对于程序中需要重复出现的代码段,应将其定义成独立模块(函数或过程)实现。

为了便于人们对程序的阅读,清晰整齐的书写格式是必不可少的。以下列出了书写程序时需注意的几个主要格式问题:

(1)虽然许多语言都允许在一行上书写多个语句,但为了程序看起来更加清楚,最好在一行上只书写一条语句。

(2)在书写语句时,应采用分层缩进的格式使程序的层次更加清晰。

(3)在模块之间通过加入空行进行分隔。

(4)为了便于区分程序中的注释,最好在注释段的周围加上边框。

4.输入和输出

由于输入和输出是用户与程序之间进行交互的渠道,因此输入、输出的方式往往是用户衡量程序好坏的重要指标。为了使程序的输入、输出能便于用户的使用,在编写程序时应对输入和输出的设计格外注意。

在运行程序时,原始数据的输入工作通常要由用户自己完成。为了使用户能方便地进行数据的输入,应注意以下几点:

(1)输入方式应力求简单,尽可能减少用户的输入量。当程序中对输入数据的格式有严格规定时,同一程序中的输入格式应尽可能保持一致。

(2)交互式输入数据时应有必要的提示信息,提示信息可包括:输入请求、数据的格式及可选范围等。同时,在数据输入的过程中和输入结束时,也应在屏幕上给出相应的状态信息。

(3)程序应对输入数据的合法性进行检查。若用户输入了非法的数据,则应向用户输出相应的提示信息,并允许用户重新输入正确的信息。例如,除法操作的除数不能为0,当用户输入0时,应输出出错提示并允许用户再次输入。

(4)若用户输入某些数据后可能会产生严重后果,应给用户输出必要的提示并在必要的时候要求用户确认。

(5)当需要输入一批数据时,不要以记数方式控制数据的输入个数,而应以特殊标记作为数据输入结束的标志。例如,要输入一个班学生的成绩,若要求用户输入学生的总数并通过总数来控制输入数据的个数,无疑就会增加用户的麻烦;而若以特殊标记来控制数据的录入,如当用户输入-l时结束输入,对于用户而言就方便多了。

(6)应根据系统的特点和用户的习惯设计出令用户满意的输入方式。

用户需要通过程序的输出来获取处理结果。为了使用户能够清楚地看到需要的结果,设计数据输出方式时应注意以下几点:

第一,输出数据的格式应清晰、美观。如对大量数据采用表格的形式输出,可以使用户一目了然。

第二,输出数据时要加上必要的提示信息。例如,表格的输出一定要带有表头,用以说明表格中各项数据的含义。

二、程序效率

程序效率是指程序的运行速度和程序占用的存储空间,即主要涉及处理时间和存储器容量两个方面。软件的“高效率”,即用尽可能短的时间及尽可能少的存储空间实现程序要求的所有功能,是程序设计追求的主要目标之一。一个程序效率的高低取决于多个方面,主要包括需求分析阶段模型的生成、设计阶段算法的选择和编码阶段语句的实现。正由于编码阶段在很大程度上影响着软件的效率,因此在进行编码时必须充分考虑程序生成后的效率。软件效率的高低是一个相对的概念,它与程序的简单性直接相关,不应因过分追求高效率而忽视了程序设计中的其他要求。一定要遵循“先使程序正确,再使程序有效率;先使程序清晰,再使程序有效率”的准则。软件效率的高低应以能满足用户的需要为主要依据。在满足以上原则的基础上,可分别从提高运行速度和优化存储空间这两个方面来提高程序的效率。

1.用于提高运行速度的指导原则

为了提高程序的运行速度,应尽量避免和简化复杂的运算,为此应遵循以下原则:

(1)编写程序之前,先对需要使用的算术表达式和逻辑表达式进行化简。

(2)尽可能多地采用执行时间短的算术运算。

(3)尽量避免使用多维数组、指针和其他复杂的数据类型。

(4)尽量采用整型算术表达式和布尔表达式。

(5)尽可能减少循环体,特别是内循环中语句的个数。

(6)尽量使同一表达式中的数据类型保持统一。需要特别强调的是,应尽量避免不同类型数据的比较运算,因为这样有可能导致程序运行出错。

(7)应当对所有的输入和输出安排适当的缓冲区,以减少频繁通信所带来的额外开销。

2.用于优化存储空间使用的指导原则

为了节约程序运行期间所占用的内存空间及提高数据存取的效率,应遵循以下原则:

(1)对于变动频繁的数据最好采用动态存储。

(2)可根据需要采用存储单元共享等节约空间的技术。

(3)选用具有紧缩存储器特性的编译程序,在必要时甚至可采用汇编语言

(4)采用结构化程序设计,将程序划分为大小合适的模块。一个模块或若干个关系密切的模块的大小最好与操作系统页面的容量相匹配,以减少页面调度的次数,提高存储效率。

虽然在编码阶段通过遵循相应的规则可以在一定程度上提高软件的效率,但必须注意:提高软件效率的根本途径在于选择良好的设计方法、良好的数据结构和良好的算法,不能指望通过语句的改进来大幅度提高软件的效率。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈