首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

关于开发理论的回帖整理之一,该如何解决

2012-02-17 
关于开发理论的回帖整理之一问题:三层结构的模型层把软件搞得很麻烦,有必要吗?详见http://topic.csdn.net/

关于开发理论的回帖整理之一
问题:三层结构的模型层把软件搞得很麻烦,有必要吗?
详见http://topic.csdn.net/u/20091217/14/e54f2902-37b2-4432-b16a-98b54807c025.html
我的回答:
其实很多初级开发人员往往提出的是最质朴的问题,而这往往又触及到很多软件开发的深刻理论, 
这也是很多所谓有经验的高级开发人员无法回答的, 
不成熟的团队只是作出model、BLL这种分层的样子,而代码实际上并没有分层; 

什么是“低耦合”?什么是“面向修改封闭”? 
最实际的,如果如果用户要在表单上增加一个字段,看看你的项目要改几个地方,触及到几个层? 
一个成熟的开发组织,在这种情况下只修改一处,那就是项目文档(或者说项目模型), 
当然如果你的团队能做到只修改2处,一处项目文档,一处数据库,那做的也不错, 
当然如果你还要修改UI的话其实做的也很不错了,但这样就已经不适合工业化生产了; 

再说说什么是“强内聚”,什么是“面向添加开放” 
功能单一到不可拆卸的模块就是最高强度的内聚,换句话说就是要把你的代码原子化, 
接下来就是推迟组装,推的越迟越好, 
一个成熟的开发组织,能把功能推迟到运行时组装,也就是说组装是自动完成的。 


请想想电脑换内存的事情,有可能要拔下就内存,插上新内存,搞定,当然还需要打开机箱外壳, 
是不是打开外壳跟换内存无关呢?当然这并不是主要矛盾,因为内存很少更换, 
所以U盘是直接插在外壳的接口上的,因为这种存储介质经常使用, 
再看看工业应用:热插式硬盘、热插式电源, 
需求变更和故障排除变成了替换和添加, 
这些举不胜举的例子都可以为我们的软件设计提供好的思想, 
虽然软件工业还不够成熟,但是传统工业已经成熟了,我们可以借鉴; 

最后要说:不要为了分层而分层,层不拘束于某种样式,既可以有形,也可以无形, 
如果预见到你的团队将来会开发更加复杂的项目,而这种复杂是扩散的 
那么请付出最大的成本构建项目的生产模式,否则的话将来开发成本将不可控制。 

这都是本人的切身感受和经历,并非来自网摘,也非权威,有误不当之处,专家指正。 



[解决办法]
学习
[解决办法]
楼主说得不错!!学习之!!
[解决办法]
有收获
[解决办法]
不错
[解决办法]
顶~
[解决办法]
很好!

有些项目中“牵强附会”的三层结构不仅带来的是维护的麻烦,当需求变更后更麻烦,工作量没减少,反倒加大了,运行效率也会有所降低。

多亏有所谓的代码生成器之类工具,否则累死人。


[解决办法]
学习
[解决办法]
学习,说的挺好
[解决办法]
分层不是简单滴分隔,或是建立独立的 project,

分层是职责的划分,每层分布不同抽象级别的对象,
分层必须对应分层的抽象设计,否则分层只能自寻烦恼!

大师们已经讲了许多,可惜能耐心去读一读的程序员却是凤毛麟角!
[解决办法]
比较欢迎这类总结性的文字,先mark再看。。。
[解决办法]
up
[解决办法]
DING.
[解决办法]
文章很好 很需要
[解决办法]

探讨

什么是“低耦合”?什么是“面向修改封闭”?
最实际的,如果如果用户要在表单上增加一个字段,看看你的项目要改几个地方,触及到几个层?
一个成熟的开发组织,在这种情况下只修改一处,那就是项目文档(或者说项目模型),
当然如果你的团队能做到只修改2处,一处项目文档,一处数据库,那做的也不错,
当然如果你还要修改UI的话其实做的也很不错了,但这样就已经不适合工业化生产了;


[解决办法]
友情UP
[解决办法]
顶一个
[解决办法]

给楼主顶一个
[解决办法]

[解决办法]

[解决办法]
up
[解决办法]
rt
------解决方案--------------------


好的思想是日积月累的。
[解决办法]
写的不错!~· 看了!....
[解决办法]
UP

[解决办法]
看看
[解决办法]
看看
[解决办法]
up
[解决办法]
说的不错......

但是 
------什么是“低耦合”?什么是“面向修改封闭”?
................................

达到这个效果,肯定会损失一部分性能,对于短周期开发项目也不适合,除非有像3层这样成熟的框架,拿来照搬差不多
[解决办法]
不错不错,就是需要这样的楼主,总结的挺好,顶下
[解决办法]
顶一下
如果要添加一个字段,不改数据库行吗?
难道你的数据库也是运行时才生成的? 
不要说什么项目文档驱动,我看正确的应该用户驱动,不是吗?一切围着用户在转!

分层很好,但是不少人钻了牛角
[解决办法]
比较欢迎这类总结性的文字
[解决办法]

[解决办法]
路过
[解决办法]
学习了。
[解决办法]
帮顶一个
[解决办法]
studing

热点排行