什么叫过度设计

    今天看到了一个贴子,在热评,偶没有发贴的权限,所以就开个博说说吧。

    http://www.iteye.com/topic/774926

  

     说来丢脸,我已经有了六年多的工作经验了,可是我现在什么都不是,虽然,一直走在架构师的路上,但,我一直觉得自己还没有达到自己想象中的架构师的水准,我也还在写着代码。所以,以下我说的话只是一家之言,有错的不要见怪。


    我个人觉得,现在SOA面向服务,这个思想这么流行的今天,竟然有人想把service层给省,这让我十分的惊讶,service层他可是有一个很重要的功能,那就是业务代码的重用。我不知道,如果你的代码都放在web action里,那里要怎么做重用。现在一个软件项目,是在一个企业的大环境下使用了,为其他的项目提供一些服务已经是太正常不过了,可是都在action要怎么重用他呢。我知道,大家会第一时间想到的是敏捷,不做前提性的假设。敏捷是个好东西,可是,前提测试要做到非常的完美才成,要不你是敏不起来的。一些业务代码,你想改,你想重构,那是有很大风险的,如果你想说当需要做重用时再独立出来不就得了,这句话,本身就会有风险。我到目前为止,还没有见过一个项目可以做到真正的敏捷,虽然,这东西听起来很好,做起来还是很难的。不过有一点,我也觉得敏捷还是要的,因为,如果没有敏捷的话,那你的代码会越来越臭,现在我接触的项目都是一个迭代的过程,需求bug一直向上加,变臭是一定的,我也一直走在这条路上,但一直不顺,不知大家有没有什么好的想法。


      过度设计,这应该要看针对的是什么样的项目,一个非常简单的东西,不需要什么与外系统的交互,没有什么繁复的业务逻辑的话,那三层的结构的确是一种过度设计,必竟,三层的设计,这是要花成本的,如果你没有必要使用他提供的一些特性,你当然可以不使用他。但有一点,我个人觉得,过度的设计,总比不设计来得好,过度设计至少他有用脑子设计了,一定有设计者当时对构架,对项目的一些考量,存在必有其合理性。不能一味着去批判它,应该知道他的特点,在你需要使用到他的特点时,可以使用他的设计。不过,有一点,不经过脑子照搬的就不能说是一种设计。

     

      说起来,现在的公司大部分都会使用一个通用的架构来进行项目开发,这个架构主要是要针对公司所进行的业务领域来进行设计,这个构架,应该会满足,该业务领域下的80%的架构要求。在这里,如果以单个项目来看,这个架构非常可能成为一个过度设计的产物,他会耗用因为过度设计而 增加 成本 问题。但如果每一个项目有一个自己的架构,那成本增加得更快,因为,公司内部的人员,如果可以针对一个架构来进行培圳,会比撒网式的培圳简单得多,人员的分配和流动结约下更多的成本。必竟,一个开发人员要经历多个项目的,如果架构一直在变,那学习成本要高得多,而且,你的架构意图也不可能一时半伙的被执行下去。并不是第一个开发人员都是在用脑子在做事的,而且这个比例应该很高才对,一个统一的架构和相应的规范可以减少不用脑子做事所可能范的错误。

     

      当然快速开发也是很重要的,要达到快速的开发有很多方法,一个统一架构而出现的每个项目里,因此而损失的效率问题有时可以使用一个好的开发工具来解决,你可以写一些插件来针对你的构架进行快速的开发。我想大家都有写过代码生成器吧,他不是可以提高多们的生产效率减少成本吗。在贴子里说的案例中,的确,架构还是有改进的地方,比如使用 CommonDAO,CommonService来减少你写的代码量就是了。

 

--------------------------------------------------

我没有办法发贴,我不知道为什么二楼的service会不能独立运行,service应该层不应该以web容器相关,他只向下依赖,在使用spring的时候,大部分情况下是一个单例的,我可以在很多的地方重用这个service,很多时候会使用一个层,或是一个工具包把他给发布出来,action有时候是会使用到Web容器的东西,他的重用是有条件的。

     

     

     

     

     

    

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值