【摘要】:除此之外,在多人协作时,文档有助于统一认识,避免遗忘。从这个角度看,与设计相关的文档远不是越细越好;而是应该关注于较高层次上的概念和逻辑间的关系。这里的“较高层次”似乎很难直接定义,但以现实为基础,换个视角后,却并非不可推断,比如说:●设计文档自身最终应该要支持一定的分工,一旦分工必然会涉及不同人负责的不同模块的交互。
文档主要是用于记录设计的结果,所以我们可以讲,文档与设计是同一个东西,也与代码是同一个东西。当同一样东西用两类方式记述时,代价是比较大的。比如,维护两者间的一致性等都要消耗额外的人月。
文档所涉及的层次越低,涉及的细节越多,变化发生时,所引起的同步工作量也就越大。但文档并非没有价值。代码之中的抽象是可以分为不同层次的,在很多时候,我们需要在不同层次上审视软件的不同侧面。比如,暂不关注类的细节,而关注所有类之间的静态关系。这个时候,直接使用代码将变得困难,因为代码自身并不区分层次,包含所有细节。
比如说,打开数据库→查询→处理结果这样非常简单的核心逻辑往往会混杂在判断输入是否有效,创建SQL语句,逐行处理数据等诸多细节之中。但理解代码时,往往并不能一下子把握所有细节,而需要从大往小了看,这个时候文档是有作用的。除此之外,在多人协作时,文档有助于统一认识,避免遗忘。从这个角度看,与设计相关的文档远不是越细越好;而是应该关注于较高层次上的概念和逻辑间的关系。
这里的“较高层次”似乎很难直接定义,但以现实为基础,换个视角后,却并非不可推断,比如说:
●设计文档自身最终应该要支持一定的分工,一旦分工必然会涉及不同人负责的不同模块的交互。为支撑这种分工,那么不同人所负责的模块的接口应该被定义清楚,否则会导致过多的交流。(www.xing528.com)
●多线程或多进程结构需要预先理清数据流,因此需要预先讨论数据流和时序间的关系,为能够进行讨论,这部分内容需要文档化。
●......
此外像重用的要求、可测的要求也都可以成为文档必要程度的一种度量尺度。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。