再问:项目的前期设计、架构与后期维护(如何应对变化)
自我说明一下,本人经验不多,基本上算个新人吧 呵呵 各位别见怪了,并且很不幸,没有进过IBM,Microsoft这类的顶尖IT公司, 最多也是游走在中小型公司,目前为止都还没有碰到一个心怡的team 所以对于项目的架构这块心里一直有几个疑问:
1:最开始的时候我接触了 “三层” 感觉它在一定程度上可以对项目解偶。 于是我逐渐把项目都转移成了三层。 实体类映射数据库的表,DAL集中处理底层的SQL数据问题, BLL处理业务逻辑,UI....
但慢慢的我发现这样并没有达到我想要的目的。 由于实体类与数据库是一一对应的,并且由于UI DAL BLL 之间的过度依赖导致数据库一旦有变动哪怕是字段的顺序发生变化也会引起DAL BLL UI的连带性改动,大家知道,这种改动是非常致命的。(举个例子:DAL取了一张表的数据后交由BLL处理,BLL把处理的结果给UI呈现出来,但这么做的的后果是带来了严重的偶合性,比如我在表里面增加了一个字段,那么很好,首先实体类要改,DAL的SQL语句要改,BLL要改,UI也要开刀。。。) 后来我知道这种三层是低级的, 其原因是DAL和数据库的字段之间的硬编码造成的。这种三层会附带有很高的偶合性。 不过话说回来 问题真出在这里吗?我自己也摸不透。
2:后来我又接触了ORM,几经转折,我又用上了NHibernate,这个确实要比之前的“硬编码”要好的多,也在一定程度上做到了“解偶”,但似乎还是不完美。如果有较大的改动时 修改DAL的工作远比上面那种的工作量要大,实体类要改,映射文件要改,与之有关联关系的表也要改。oh god。 很让人头疼的。我始终琢磨不透我到底是哪错了,前期设计不够?还是我对nhibernate不是很了解? 希望大家点拨我一下。
3:终于来到了最终的、最源头的问题上面了:前期设计。 挺美好的一个词,但它的事却是大把大把的。每个人都说要把前期设计做好后面就会好很多了。说到这里我想提两个问题(1)前期设计你们每个人都能肯定做到最完美而把所有的东西都考虑进去吗?我想答案是否定的,(2)如果现在在你手上的是个私单或者是你个人想要做成去面试的项目的时候,当你一个人的时候你又能把前期的设计做到尽善尽美吗。我想答案更是否定的,那么你们又是怎么做的呢。 我真的很想听一下。
以上都是我在实际生活中遇到的一些个很实际的问题,没有很虚无的高谈阔论,仅仅是希望大家一起来交流一下,点拨一下“迷途”的我。