我不知道这篇文章会写成怎么样,但既然算是一个想法,我想也可以放到首页被大家鄙视或者怎么怎么一番吧。(很多新人发随笔的时候是否都选择了发首页?我是想到哪里写到哪里,可能会就显得乱了)
最近一段时间园子里讨论框架算是比较热烈的,我是每天订阅首页更新的,所以也想着来说几句。
开头先表明,我正式的工作中用的并不是.net,看.net的书和一些简单的开发,是我在03、04年的时候吧。再往后几乎就没有用过了。但是我想编程的思想都一样的,说一点框架不算为过吧。
在工作中,很多公司、个人都选择了使用框架进行开发,大多数开发人员都会熟悉一到两个框架,并可能对某一个框架有着很深的了解,在看到别人解决不了的问题的时候,有时候也会冒上一句:你如果用XXX框架,只要用XXX方法就可以解决了,有必要那么烦吗?
是的,框架确实简化了很多开发工作,什么ORM啦,页面自动生成啦,(对于VS那种拖控件生成页面的方式,一向很感慨的),对于用户来说,他需要的几乎只是一个业务实现和逻辑控制。很多公司也确实是这样工作的,但是我想说的是:在这样的环境下,你除了会使用这些框架,你对程序的一些底层,你还熟悉吗?
<被神话的框架>http://www.cnblogs.com/birdshover/archive/2008/11/26/1341568.html,说的基本也是这样的问题。
企业应用框架,那是为的快速开发,个人应用框架,除了快速开发外,最重要的应该是学习实现框架所用的一些架构、思想,而不是为了用而用(接单除外)。
很郁闷的就是看到一些人(我们公司的另一部门的项目经理)在项目开发的时候居然用上了最新的框架,对于一些新的框架,虽然有部分技术是先进的,但是BUG也是很多的,在项目一开始的时候,他自己就说了,我们要用XXX框架,然后手下一帮子人花了一个多月先学习这个框架,最后在开发的时候问题多多,可是他在向领导介绍的时候说的是:我们采用了业界最领先的框架。结果在做关系映射的时候,数据库里的数据如果默认是0,创建外键的时候就会报错,但他从来没有找自身的原因,而是把责任推到我们部门,说我们不会设计数据库,int字段默认不应该为0,应该用NULL,被雷倒了。[题外话:拿着那么高的工资,做的却是一些不切实际的事情,怪不得去哪家公司哪家公司就差不多完蛋了(对不起,不能多说,我还要混饭吃,同时猜测我们公司会在什么时候被他们整跨)]
在开发的时候认识几个程序员,都在自己写着框架,然后开源发布了,不料在自己的论坛里,很多使用框架的人居然在问:这个框架带留言板吗?这个框架带XXX吗?一直被雷着。。。
整理一下思路先。
框架,我们是要用的,但是要看用的范围和用的度。在企业开发的时候,我们可以尝试采用框架,毕竟在使用框架的时候,有很大一部份被忽略掉的就是效率(估计没有人会说框架的运行效率高的),可是在做WEB应用的时候,数据量并发很大的时候,如果你对框架底层并不熟悉,那么建议还是不要使用框架,而是寻求一些简单的解决方案(比如在使用SQL的时候直接手写,这样调试起来也会方便一点,不要象我们公司那些人,用Hibernate查询,生成的SQL居然横跨了31张表,太牛叉了)
对于个人,我们并不建议使用框架,但可以学习框架的设计思想,毕竟这些框架在实现的过程中,大都采用了一些很常用也很实用的设计模式,看完一个框架(我说的看完是指仔细读完源码),那些设计模式也就几乎都了解了,当然看代码的时候也可以对应那些设计模式的书。几乎所有的框架都会有自己的特色,但同时也会有自己的缺点,不可能会有完美的解决方法,否则目前就只会流行一种框架而不是框架满天飞了。
(看框架前,请先尝试自己写点代码,不要啥都没学就直接看、用框架,那只是一种白痴行为,不过现在很多培训点就是这样的。怪不得软件业越来越不 值钱了,创造力几乎都没有了,虽说要学印度,但也要教别人基础的吧。。。)
最后再放点屁:先学好基础,打实基础,再用框架,再学框架,否则到最后都是一场空。(如果你辛苦用的框架,作者不更新了,你怎么办?就象linux的某个文件系统一样,业界认为这个文件系统很好,可是作者却因为杀死老婆坐牢去了,再好的东西没有维护,不再更新,你敢用吗?)