一个设计反模式——究竟什么是轮子理论
2009-01-22 00:31
841 查看
发这篇文章是从看到一篇《也谈”轮子理论”》引起的,作者的观点是说,如果真的像轮子理论一样,那么这个世界上就没有了新技术的诞生。那是不是轮子理论本身的局限性呢?我个人有着不同的见解。
轮子理论这个的概念,我第一次看到是在一本图灵的反模式书上看到的,其中有一条反模式解决方案叫做不要重复发明轮子,就是说当我们做一个项目,或者需要一个技术的解决方案时,我们第一步不是去想,我们要如何解决这个问题,而是应该先去搜索资料,找到这个问题曾经有什么解决方案或者好的方法,我们把这个叫做“轮子理论”。
作者的观点是如果真的轮子理论广泛试用,那么当初有了JAVA为什么还需要.NET,有了Struts为什么还需要有Webwork,有了一个NHibernate为什么还要搞出一个LINQ出来,当初学马克思主义哲学的时候有这样一句话,叫马克思主义哲学是与时俱进的。当然,轮子理论也是一样。
究竟什么是轮子理论?
诚然,如果单纯地做应用,做商业项目,轮子理论是广泛适用的。项目周期短,时间紧,当你发明轮子结束后,便会发现用户已经催着你要项目了。而你的整个汽车还只有一个轮子而已。完蛋.........
我对轮子理论做了这样一个总结。轮子理论是先找到轮子,然后学会如何使用轮子,然后把这个轮子针对你的汽车做出适当的改善,当有一天发现你的轮子已经不再适用,或者说已经没有改善价值的时候,算了,抛弃轮子,开始发明你的心轮子。这才是轮子理论一个循序渐进的步骤!
说说微软的.NET Framework,当初Sun公司JAVA的如火如荼,微软并没有在第一时间推出.NET,而是在八年之后,当他发现了JAVA的很多弊端之后,开学效率低,框架没有业界标准,JVM效率偏低。于是才重新发明出了.NET这个大轮子。试想,如果微软在第一时刻不去看轮子,而马上就去发明新轮子,那今天的.NET会是如何?
废话说了一大堆,只是对每个质疑轮子理论的人提个建议,对于每个人来说,轮子理论还是普遍使用的,关键在于我们要理解一个正确的轮子理论模型!
08年过去,大学也即将毕业,年后要开始自己的第一份工作了,基于WorkFlow的开发,还真是个全新的挑战呢。总之,新年继续专注.NET,梦想不变!
轮子理论这个的概念,我第一次看到是在一本图灵的反模式书上看到的,其中有一条反模式解决方案叫做不要重复发明轮子,就是说当我们做一个项目,或者需要一个技术的解决方案时,我们第一步不是去想,我们要如何解决这个问题,而是应该先去搜索资料,找到这个问题曾经有什么解决方案或者好的方法,我们把这个叫做“轮子理论”。
作者的观点是如果真的轮子理论广泛试用,那么当初有了JAVA为什么还需要.NET,有了Struts为什么还需要有Webwork,有了一个NHibernate为什么还要搞出一个LINQ出来,当初学马克思主义哲学的时候有这样一句话,叫马克思主义哲学是与时俱进的。当然,轮子理论也是一样。
究竟什么是轮子理论?
诚然,如果单纯地做应用,做商业项目,轮子理论是广泛适用的。项目周期短,时间紧,当你发明轮子结束后,便会发现用户已经催着你要项目了。而你的整个汽车还只有一个轮子而已。完蛋.........
我对轮子理论做了这样一个总结。轮子理论是先找到轮子,然后学会如何使用轮子,然后把这个轮子针对你的汽车做出适当的改善,当有一天发现你的轮子已经不再适用,或者说已经没有改善价值的时候,算了,抛弃轮子,开始发明你的心轮子。这才是轮子理论一个循序渐进的步骤!
说说微软的.NET Framework,当初Sun公司JAVA的如火如荼,微软并没有在第一时间推出.NET,而是在八年之后,当他发现了JAVA的很多弊端之后,开学效率低,框架没有业界标准,JVM效率偏低。于是才重新发明出了.NET这个大轮子。试想,如果微软在第一时刻不去看轮子,而马上就去发明新轮子,那今天的.NET会是如何?
废话说了一大堆,只是对每个质疑轮子理论的人提个建议,对于每个人来说,轮子理论还是普遍使用的,关键在于我们要理解一个正确的轮子理论模型!
08年过去,大学也即将毕业,年后要开始自己的第一份工作了,基于WorkFlow的开发,还真是个全新的挑战呢。总之,新年继续专注.NET,梦想不变!
相关文章推荐
- 基本上,把switch,用设计模式代替,肯定是bug和过度设计。想想,本来修改一个文件几行代码可以解决的问题,变成修改3-6个类才能实现一样的功能。不是傻是什么?
- 什么是测试用例和测试规程,设计一个测试用例应当从哪几方面考虑?
- JAVA设计模式是个什么玩意儿_04_建造者模式
- 设计模式State 的一个例子
- 经验技巧分享--ASP.NET和Ajax应用一个超级实用的设计模式---享元模式
- Cocos2d-x3.2与设计模式(零)设计模式是什么
- 面试中临时让写的代码——编写一个延迟加载的单例设计模式
- 一天一个设计模式---生成器模式
- 关于设计模式的定义,什么是设计模式?
- 一个优秀的程序必备的几种设计模式
- 设计模式01-什么是设计模式
- 设计模式: 自己手动写一个工厂模式(整合工厂方法模式和抽象工厂模式)
- 《敏捷软件开发-原则、模式与实践》-第七章 什么是敏捷设计
- 什么是设计模式?(Design pattern)--和生活结合更好理解
- [菜鸟白话设计模式系列] Bridge 模式 -- 一个连接线,两个支撑点
- 自己写的一个轻量级javascript框架的设计模式
- 什么是设计模式
- 黑马程序员:单态设计模式static(使类在内存只有一个实例对象)
- Node.js 究竟是什么--Node 是一个服务器程序
- (入门)什么是AOP?什么是代理模式?怎么设计日志拦截器?