关于开发理论的回帖整理之一
问题:三层结构的模型层把软件搞得很麻烦,有必要吗?
详见http://topic.csdn.net/u/20091217/14/e54f2902-37b2-4432-b16a-98b54807c025.html
我的回答:
其实很多初级开发人员往往提出的是最质朴的问题,而这往往又触及到很多软件开发的深刻理论,
这也是很多所谓有经验的高级开发人员无法回答的,
不成熟的团队只是作出model、BLL这种分层的样子,而代码实际上并没有分层;
什么是“低耦合”?什么是“面向修改封闭”?
最实际的,如果如果用户要在表单上增加一个字段,看看你的项目要改几个地方,触及到几个层?
一个成熟的开发组织,在这种情况下只修改一处,那就是项目文档(或者说项目模型),
当然如果你的团队能做到只修改2处,一处项目文档,一处数据库,那做的也不错,
当然如果你还要修改UI的话其实做的也很不错了,但这样就已经不适合工业化生产了;
再说说什么是“强内聚”,什么是“面向添加开放”
功能单一到不可拆卸的模块就是最高强度的内聚,换句话说就是要把你的代码原子化,
接下来就是推迟组装,推的越迟越好,
一个成熟的开发组织,能把功能推迟到运行时组装,也就是说组装是自动完成的。
请想想电脑换内存的事情,有可能要拔下就内存,插上新内存,搞定,当然还需要打开机箱外壳,
是不是打开外壳跟换内存无关呢?当然这并不是主要矛盾,因为内存很少更换,
所以U盘是直接插在外壳的接口上的,因为这种存储介质经常使用,
再看看工业应用:热插式硬盘、热插式电源,
需求变更和故障排除变成了替换和添加,
这些举不胜举的例子都可以为我们的软件设计提供好的思想,
虽然软件工业还不够成熟,但是传统工业已经成熟了,我们可以借鉴;
最后要说:不要为了分层而分层,层不拘束于某种样式,既可以有形,也可以无形,
如果预见到你的团队将来会开发更加复杂的项目,而这种复杂是扩散的
那么请付出最大的成本构建项目的生产模式,否则的话将来开发成本将不可控制。
这都是本人的切身感受和经历,并非来自网摘,也非权威,有误不当之处,专家指正。
------解决方案--------------------学习
------解决方案--------------------楼主说得不错!!学习之!!
------解决方案--------------------有收获
------解决方案--------------------不错
------解决方案--------------------顶~
------解决方案--------------------很好!
有些项目中“牵强附会”的三层结构不仅带来的是维护的麻烦,当需求变更后更麻烦,工作量没减少,反倒加大了,运行效率也会有所降低。
多亏有所谓的代码生成器之类工具,否则累死人。
------解决方案--------------------学习
------解决方案--------------------学习,说的挺好
------解决方案--------------------分层不是简单滴分隔,或是建立独立的 project,
分层是职责的划分,每层分布不同抽象级别的对象,
分层必须对应分层的抽象设计,否则分层只能自寻烦恼!
大师们已经讲了许多,可惜能耐心去读一读的程序员却是凤毛麟角!
------解决方案--------------------比较欢迎这类总结性的文字,先mark再看。。。
------解决方案--------------------up
------解决方案--------------------DING.
------解决方案--------------------文章很好 很需要
------解决方案--------------------
------解决方案--------------------友情UP
------解决方案--------------------顶一个
------解决方案--------------------给楼主顶一个
------解决方案--------------------
------解决方案--------------------
------解决方案--------------------up
------解决方案--------------------rt
------解决方案--------------------