从一碗面,领悟软件开发

     中午吃饭,点了一碗面。纯手工打造,看着服务员,将各种佐料放入碗中,不时向我询问,调配着这碗面的时候,就其手法可算上乘,与茶艺无异,从服务的角度来看,此乃一种享受。能够欣赏到厨师娴熟的手法颇为不易。就像我们去海底涝点面一样。
   
    缺点:

    然而从程序设计的角度上却有着严重的问题,首先,就线程而言,他没有采用并行的思想。她是先调配佐料,而后煮面,将原本较慢的操作方到优先级较高的地位,而将完全独立的另一缓慢操作(煮面)却放到了后面,采用串行工作的方式。造成资源浪费。
  
    另一方面,由于每次调配佐料都采用单点服务的方式,没有将公用操作合理化,造成额外的交互,降低开发效率。
   
    对于互斥资源(客人特色材料例如辣椒的计量)与公用资源(油等)同事放入关键代码段。进行互斥操作,严重影响程序效率。

   
    优点:
   
    采用同于接口,组件化开发,面向接口编程,并且接口通用性很好(汤勺),通用模块(各个碗中的调料),根据用户的个性化需求,任意组合,做到低耦合,高内聚。

     所有程序都希望做成这样,但是鲜有如愿者,之所以有此问题,是因为我们不能有效的定义接口。无法定义汤勺这样的接口对象。因为总想设计出通用性高的接口, 做出大而全的东西,反而发现,最后受制约的也是自己。所以我们天天叫嚣着平台化思想,如何代码重用,为了实现这个目的我们加上了无数的设计模式思想进去。 到头来却越来越不好用,最终夭折。

    然后我们消沉一段时间后,重整旗鼓,恢复信心,重头再来。重做之前的事情,采用一条完全不同的道路再次尝试,其实效果不见得比之前的好。也不见得比之前的差,就像中餐、西餐一样。意大利面和老北京炸酱面都是一样的。不同的就是一个用碗装,一个用盘装。
   
    之前的经验完全摒弃,周而复始,发现除了消磨时间。我们没有任何收获。没有吸取历史的教训。却反而将灾难重复上演,就像X档案中的一集,主角每次醒来都是 为了同一个目的去尝试不同的办法。每次都在尝试着不同的解决办法。却发现每次的结果都是失败的,直到最终他意识到不应该盲目的寻找新的解决办法,而应该总 结每次失败的共性,发现什么是问题的本质。最终才得以解决问题。
   
    而我们平台化的工作也是每次都采用全新的思想。而不是总结上次失败的教训。并保留上次的成果。(未完。。。)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值