如何构建快速响应需求的代码

最近在开发过程遇到一个问题,最初期的版本需求很简单,当然我实现的也很简单。但中途不断的有新的需求提出来,在以前的简单代码中加入后来的新需求,变的越来越复杂,导致代码的可维护性大大降低。介于这个问题,我决定把代码整理一下,记录一下。

当我们的代码在一个主循环中,有很多的变量要监控,那意味着将有很多的  if--else语句,这样的代码在后期很难维护,如下:

  while (!_ isInterrupted ) {
  OperByDate ();
  if ( IsGetSkuTimeOut ()) {
  GetServerBaserInfo ();
  }
  // is get notification list time up
  if ( IsGetNotificationTimeOut ()) {
  GetServerNotificatonList ();
  }
  // is xxx
                                      if( IsGetXXXXTimeOut ()){
                                              Dosomethis ();}
  ThreadSleep (120000);// 60s
  }


后来,决定,对他重构。
思考:
对于一个完成的系统,我们新增加任何一个功能的复杂度都应该是一个常数,而不应该随的系统的增大增加,如果其他功能不变的话,我们不需要改动其他的代码。
计模式 -----》 面向接口的编程
在系统分析和架构中,分清层次和依赖关系,每个层次不是直接向其上层提供服务(即不是直接实例化在上层中),而是通过定义一组接口,仅向上层暴露其接口功能,上层对于下层仅仅是接口依赖,而不依赖具体类 ---- 引用
这也是设计模式的 依赖倒转 原则

介于这个考虑:
最终变成:
// 新方案
while (!_ isInterrupted ) {
for( IEventTick event : mEventArray )
event.Tick ();
ThreadSleep (120000);// 60s
}


这样的好处
接口与实现分离
层不再关心具体的逻辑,只负责调用抽象的接口进而找到具体的实现类上层代码由 800 行减到 127
依赖倒置 —- 具体依赖抽象

   如果我们要加一个新的事件,只需做三步1,实现一个新类来实现接口的方法2.实现这个类对象构造的factory 3.将这个对象加入到上层的事件队列中。

  最坏的打算,如果某个逻辑有变动的话,我们只需找到具体的类来修改其逻辑即可,不会影响到其他逻辑,因为我们的逻辑都是单独的一个对象。

总结:
我们在设计系统的时间,往往是需求很不明确,这个时间,个人不建议我们设计人员去“发挥太多的想象”,这样很容易引起过度设计甚至是南辕北辙,但在后面当我们对需求慢慢的明确的时间,当你发现每当变动一个功能时,你的工作量会随着系统的增大而增大时间,请停下来,思考一个是否应该把代码重构一下。
个人认为设计模式的这几个原则很重要,我们在写代码的时间会不会考虑到,我们的代码是否达到了一下的标准:
Ocp 原则
然还要尽可能的减少类之间的耦合度





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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值