树状程序结构设计的过程

树状程序结构是比较通用的程序结构,能够表示所有逻辑的一种程序结构,相比于中心化结构,树状结构模块划分更细,更清晰。

以下是我最近一段时间对该结构的思考与实践经验:

总体介绍

树状程序结构设计时需要首先对需求建模,主要按照面向对象设计的原则先做一次大概的划分,同时当一个模块的功能比较复杂时,需要对其独立出来,作为其子树,依次层层拆分,最终完成所有需求的设计。

拆分原则

一般来说,一个业务类函数不能超过1页,一个类不能超过9-12个方法,工具类不做限制。业务类足够的清晰是别人能看懂你的代码的最为重要的保证。

模块通信

当按照树状设计是,难免会出现模块通信问题,出现以下三种情况:在树的根部的两个子模块通信、一个节点下的两个兄弟模块通信、父子或爷爷和孙子节点的通信。

以上所有的通信当出现跨节点的通信的时候,全部采用全局对象通信,这个全局对象有类似于MFC中的theApp的对象,消息处理的方法处通过theApp来索引树上的任何对象,并连接信号,确保只在消息做处理的类中才需要依赖别的对象。

单例类可以在任何对象中被索引,但最好在业务类中不要使用单例模式。

父和子节点通信可以不用theApp,因为它可以直接获取到子树的结点。

设计过程

设计的过程必须要遵守可迭代性,每一次将一个大的需求拆分成一个很小的需求,例如从开始的时候一个空白的窗口到一个包含个别按钮的窗口,而里面的复杂控件可以使用空白的窗口区域来代替,而复杂控件又可以作为第二次的迭代,这样就保证每次完成一个迭代之后可以Run Build一次,验证代码有没有问题。

在需求拆分之后,就需要开是画类图了。类图不需要画的非常完整,但是本次迭代的所有功能必须要靠考虑周到,以及大致的考虑后面的可扩展性,这样做可以评价本次设计中有没有出现非常复杂的类、功能冗余的类、无法扩展的类。当出现上面的情况,就需要着重设计,对模块做更加细致的拆分和使用某些设计模式简化设计的复杂性。

整个流程下来,就是‘设计’-‘编码’-‘验证’-‘设计’-‘编码’-‘验证’……一个一个迭代的进行。

总结

保证设计的好坏有三个环节可以保证,一个是最开始的模块拆分,不要拆分的过于的简单;二是在一个迭代开始的设计,保证一个功能点每一个类不要出现设计上的问题;最后是编码阶段,看一看自己的代码是否符合拆分原则。我们最不希望的是所有的功能全部设计好后发生大规模的重构。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值