Summary of Programming Principles

Introduction

编写大型计算机程序的最大困难不在于确定此程序的目标是什么,也不在于找出到达此目标的方法。由于将杂碎的的方法用于解决大型问题注定会失败,因此我们首先必须采用一种一致的、统一的和逻辑的方法,也必须仔细遵守程序设计的重要原理。这些原理有时候在编写小程序时常被忽略,但对大型项目,忽略它们将是灾难性的。

 

处理大型问题时,首个主要障碍就是准确地判断这个问题是什么。有必要将模糊的目标、矛盾的要求和可能未明确说明的需求转换成能够进行编程的、精确规划的项目。人们以前使用的方法或对工作的划分未必最适于机器使用。因此我们的方法必须确定总体目标,但却是准确的目标,然后渐渐地将工作划分成更小的问题,直到它们达到可管理的规模。

 

调试程序的困难比程序规模的增长要快的多。许多大型程序在交付使用时,仍然包含程序设计员无望找出的错误,因为这些困难看起来是难以克服的,有时候已消耗数年努力的项目由于无法发现为何不能工作而被废弃。如果我们不希望自己的项目遭受这种命运的话,就必须使用满足以下性质的方法:

l  减少错误数目,使得更易于发现那些剩余的错误。

l  能够预先验证我们的算法是正确的。

l  能够提供测试程序的方法,使得我们有理由确信这些程序不会行为失常。

 

Programming Style

一个大型程序的每一部分都必须得到妥善的组织、清晰地组织和全面的理解,否则它的结构将被遗忘,也不再能够在以某个时间连接到项目的其他部分,而那些部分可能有另一个程序设计员来完成。因此我们不把风格从程序设计的其他部分分离出来,但是从一开始我们就必须小心,养成良好的习惯。

 

Names

Always name your classes , variables and functionswith the greatest care, and explain them thoroughly.

 

Documentation and Format

Keep your documentation concise butdescriptive.

The reading time for programs is much morethan the writing time. Make reading easy to do.

 

 Refinement and Modularity

Don’t lose sight of the forest for itstrees.

Use classes to model the fundamentalconcept of the program.

Each function should do only one task, butdo it well.

Each class or function should hidesomething.

Keep your connections simple. Avoid globalvariables whenever possible.

Never cause side effects if you can avoidit. If you must use global variables as input, document them thoroughly.

 

Coding, Testing, And Further Refinement

编码,测试和进一步细化3个过程是联合并进的,然而我们在思想上还是让它们保持独立,因为每个过程都需要自己的步骤和方法。当然,编码是用一门计算机语言编写算法的过程;测试是用所选的样本数据运行程序以发现所出现的错误的过程。

 

Program Maintenance

计算机程序的维护(maintenance)包含在程序完全调试、测试并投入使用后对程序所做的所有工作。随着时间和经验的积累,人们对这个计算机程序的期望通常会发生变化。运行和硬件环境会发生变化,用户的需求和期望会发生变化,与软件系统其他部分的接口也会发生变化。因此,如果要使用程序继续有用,那么必须对它保持注意力,使它保持最新。

In fact, surveys show the following:

For a large and important program, morethan half the work comes in the maintenance phase, after it has been completelydebugged, tested, and put into use.

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值