软件开发流程之我见
基本原则:
1. 自顶向下分解
把任务逐步分拆,使得底层逻辑逐渐清晰;但要适度,如果贯彻得过深,则开发变得难以维护和扩展。
本质上就是过程式开发的精髓。
过程 = 事件(状态) + 事件所触发的动作序列.
过程把事件,状态和动作捆绑在了一起,而且忽略了事件的传递时延。所以过程分析的流程图中,箭头不标示文字, 事件被封装进了过程中.
过程只适合描述大颗粒度的功能.
2. 状态机(= 对象)
自顶向下分解到何种地步呢?当颗粒度适当的状态机原型浮现出来即可。
状态机实际上就是对象。它管理着若干状态,接受外界事件的驱动。
流程图
对于中高层功能模块,画图是一个描述和理解的好方法。
对于底层代码,就非必要,至多用流控制流程图。
传统流程图来源于低级编程方式,比较适合描述控制流,但不适合描述高级复杂模块的设计。
设计顶层至中层模块,以数据流图为主;
采用状态机设计层内横向功能时,以对象交互图+对象内部状态图为主;
编写代码要遵循契约原则
契约检查是对外界输入的容错检查。契约检查在接口函数中进行;在内部方法中不必要再重复(如果内部方法中再出现违反契约的情形,那是该模块编写者的责任,与外界无关)。
错误诊断,多用assert断言。首先应用于接口函数中;当且仅当排除外界输入错误后再进行内部错误检查。
类成员的书写顺序遵循:
1.成员变量(成员变量一般均为private,由于默认为private,所以成员变量前不必要声明private)。
2.成员方法按级别private, protected, public依次往下延伸。public方法一般为类和外界的接口。
方法的功能说明放在方法实现的地方,而不要放在方法的声明处。目的是便于和实现比对,容易理解,容易修改。
阅读(900) | 评论(0) | 转发(0) |