logo头像
Snippet 博客主题

Code Complete

你可以另找一份工作。优秀的程序员是非常短缺的。可以找到更好的工作,干吗非
要呆在一个很不开明的程序店里,徒损生命呢?

让每个人都知道由于变化需求所付出的代价

需求内容

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
· 系统的所有输入都定义了吗?包括它们的来源、精度、取值范围和频率?
· 系统所有的输出都定义了吗?包括它们的目标、精度、取值范围、频率和格式?
· 所有的报告格式都定义了吗?
· 所有的硬件与软件接口都定义了吗?
· 所有的通信交界面都定义了吗?包括握手、错误检查以及通信约定?
· 是否从用户的观点出发,定义了所有必要操作的反应时间?
· 是否定义了时间问题,如处理时间、数据传输率以及系统吞吐能力?
· 是否对用户所要求完成的任务部作出了规定?
· 每项任务所需用到和产生的数据都规定了吗?
· 规定保密级别了吗?
· 规定可靠性了吗?包括软件出错的后果、在出错时要保护的至关重要的信息、以及错误测试和恢复策略。
· 规定所需最大内存了吗?
· 所需最大存储容量规定了吗?
· 对系统的维护性是否作出了规定?包括系统对运行环境、精度、性能以其与其它软件的接口等方面变化的适应能力规定了吗?
· 是否规定了相互冲突的设计之间的折衷原则,例如,在坚固性与准确性之间如何进行折衷?
· 是否制定了系统成败的标准?

程序的组织形式

一个模块是一个能完成某一高级功能的子程序的组合,例如,对输出结果进行格式化,解释命令,从文件中读取数据等.

建立子程序的步骤

Program Design Language

模块化设计

布局和风格

The Elements of Programming Style

代码调试技术