`

“山寨”框架3宗罪

阅读更多
刚看了个自制框架的帖子,其实之前这类帖子见得比较多,吵得也都挺厉害。好像总有人一边对提议“不要发明轮子”的同学挺反感,一边以发明家自居,把话扯到中国的软件业上去。之前还看到有人见到“只用SSH的公司“坚决不去。我想说说我的看法。

我觉得框架这东西,首先要明白为什么要用它——这是废话,但又是最重要的。真的有些人是不知道为什么用框架,乱用一通,产品代码乱七八糟。

然后是学习如何用好它,掌握框架后接着可能会发现它的不足,然后要是能够的话,再试试用用其它的框架,选一个最合适的。如果实在找不着你需要的框架了,这个时候如果公司允许,你再去改进某个框架,或者研读它的源代码参考着做个更好的。

否则,我觉得你的“发明”永远只是在你的作坊公司里用用、制造混乱而已。

要说发明国产框架,其实国产框架已经数不清了,而不是屈指可数了。要不要试做个调查,自己发明框架的公司有多少,因此造成产品难以维护的公司又有多少?

说“不要重复造轮子”并不是在打击人,只是在提一个建议。

我是山寨框架的受害者。山寨框架罪状第一条:提高新手学习成本。人家学好了流行的框架进公司本来可以弄清业务逻辑后直接上手,你非得弄个自制框架,让新人多花时间出来学习框架,浪费公司资源不说,一不小心你的框架理念还能误导新人,害人又害己。人家离开这家公司后,在这积累的经验在别处也许还用不上。

山寨框架罪状第二条:降低产品质量。公司里做开发,应该以实现业务为主,技术为辅,如果自制框架,你不得不花额外的时间在框架的维护上(bug往往很多,性能好坏说不定)。使用开源框架,你大部分时间只需要关注业务逻辑(相对自制框架来说);如果自制框架,你不得不花大量精力在业务逻辑以外的技术实现上。人的精力是有限的,同时关注2种事情往往会2种事情都做不好,所谓一心不能二用。开源框架有庞大的开源社区替你承担了这些风险,替你保证了质量,为什么不用?

山寨框架罪状第三条:过于依赖老员工。这个说起来简单,开发这框架的人一旦离职,这个框架以及因它而造成的烂推子便很难收拾。除非你花重金找gigix来重构一把。

我想问问那些正在发明框架的同学,你弄明白为什么要MVC,为什么要ORM,为什么要IoC了吗?
分享到:
评论
129 楼 eyeqq 2009-04-01  
山寨框架如果自己拿来练练手我倒是觉得没什么大不了的。但是要强行推广,那就很恶心了。
很喜欢像SpringSide那样做主流框架的扩展的事,做一些最佳实践的东西方便大家。
128 楼 netfork 2009-04-01  
murainwood 写道
nychen2000 写道
slaser 写道
如果思想上不能超越现有框架,或者说毫无特别之处,最好不要造出怪鱼来。


赞同这个观点,我们说要站在前人的肩膀上,结果我们往往站在前人的脚跟上,为什么?
因为很多时候是我们的能力还不足以爬到前人的肩膀上,暂时爬不到没有关系,可怕的是还不自知。

爬脚跟时候有人可以高喊“为了新中国的SSH,冲啊!”....


打造新中国的XXXX,冲啊!!!
127 楼 yidao620c 2009-04-01  
呵呵。有的时候还是有用的。不过适合我们去研究,而不是使用。
126 楼 murainwood 2009-04-01  
nychen2000 写道
slaser 写道
如果思想上不能超越现有框架,或者说毫无特别之处,最好不要造出怪鱼来。


赞同这个观点,我们说要站在前人的肩膀上,结果我们往往站在前人的脚跟上,为什么?
因为很多时候是我们的能力还不足以爬到前人的肩膀上,暂时爬不到没有关系,可怕的是还不自知。

爬脚跟时候有人可以高喊“为了新中国的SSH,冲啊!”....
125 楼 kaipingk 2009-04-01  
真无名 写道
突然想起以前那个公司有一个山寨的web框架
可能在2002年左右做的,我觉得非常好,基本上web该有的功能都实现了。
可以说这个框架可以再封装好点就是spring了。

问题是那个NB的程序员离开了公司了,
后来的同事没有人能摸透那个框架,而偏偏有几个大客户都是依赖在这个框架上。
.....结果大家都知道....
好惨.......客户的这些产品很难有大的突破了..
我想迟早会失去这些客户的。


这些事情不是你个搞开发的事情! 客户丢了关你鸟事啊,你操心,你们的CEO这方面考虑比你差????
124 楼 nychen2000 2009-04-01  
slaser 写道
如果思想上不能超越现有框架,或者说毫无特别之处,最好不要造出怪鱼来。


赞同这个观点,我们说要站在前人的肩膀上,结果我们往往站在前人的脚跟上,为什么?
因为很多时候是我们的能力还不足以爬到前人的肩膀上,暂时爬不到没有关系,可怕的是还不自知。
123 楼 xudengke 2009-04-01  
kernaling.wong 写道
其实我觉得不是山寨不山寨的意思,问题是理解框架的核心目的与思想是什么,至于怎样去用,怎样去开发其他类似的框架这并不是问题,就好象,全球的大部分的CPU市场已经被intel与amd占领了,是不是其他国家开发自己的CPU就是浪费,是重复发明轮子?如果自己写开发的框架从设计思想上,从代码性能上可以足以动摇主流框架的地位的话,这是一件好事。说明自己的框架有其生存空间,开源的目的不是仅仅的使用,更重要是学会其设计的目的与思想,这样才不会失去框架和开源的意义,顺便说一下,我觉得楼上的那个catstorage绝对是一个很好的思想与创意,至少Hibernate亦是发展过来的。

理解框架的设计思想后,对原有开源框架进行创新,优化,简化以提高自己的工作效率,这种框架,我们应该是要支持的。而且正是我们要提倡的。
122 楼 kernaling.wong 2009-03-30  
其实我觉得不是山寨不山寨的意思,问题是理解框架的核心目的与思想是什么,至于怎样去用,怎样去开发其他类似的框架这并不是问题,就好象,全球的大部分的CPU市场已经被intel与amd占领了,是不是其他国家开发自己的CPU就是浪费,是重复发明轮子?如果自己写开发的框架从设计思想上,从代码性能上可以足以动摇主流框架的地位的话,这是一件好事。说明自己的框架有其生存空间,开源的目的不是仅仅的使用,更重要是学会其设计的目的与思想,这样才不会失去框架和开源的意义,顺便说一下,我觉得楼上的那个catstorage绝对是一个很好的思想与创意,至少Hibernate亦是发展过来的。
121 楼 魔力猫咪 2009-03-29  
我也造了个“山寨”框架,源代码已经放到GoogleCode上了,正在编写使用帮助。欢迎大家来拍砖。这个是使用Apache许可证的开源产品,我尽可能在代码里写了注释来帮助大家阅读代码。
地址http://code.google.com/p/catstorage/
120 楼 slaser 2009-03-28  
如果思想上不能超越现有框架,或者说毫无特别之处,最好不要造出怪鱼来。
119 楼 jnoee 2009-03-28  
一个永远都扯不清的话题。在javaeye就看过很多框架的发布帖和计划帖,雷声大雨声小,99.5%现在都已无声无息了。
我不反对创新与改进,不过提个小建议。弄之前先与现有的同类框架做个对比,将要开发的框架的优点列出来,做一个评估。是否能实现?是否需要重写?或者扩展改进就可以达到目的,然后再开始弄。
118 楼 accphc 2009-03-28  
“公司里做开发,应该以实现业务为主,技术为辅”很有道理!
乱七八糟的框架,学死人啊!
117 楼 wing922wing 2009-03-28  
    如果从个人学习出发,做山寨不但不为罪,还应该大力鼓励,做好后,拿出来分享,无论多么初级的山寨,都应该有包容和鼓励的眼光来看待。
    但是在公司层次来说,利用手中的资源来给自己做山寨练习能力,然后留下一堆不成熟的代码,拍拍屁股走人,这种山寨行为极为恶劣,相信大家工作中,都见识过类似山寨的危害。
    而且大部分这种山寨框架多是闭门造车,根本不管现有技术的发展,自顾自搞出一套垃圾代码,哪怕市面上已经有比其好用百倍的好东西,还是一定要造自己的土轮子。
    个人认为,作为一个专业的程序员,公司请你来上班,不是让你来练手的,你拿了这份工资,应该给公司提供生产效率最高,质量最好的产品,如果已经有开源框架或者组件良好支持的东西,就不需要自己再去动手做这些,好钢要用在刀刃上,不要浪费公司的工资玩自己的技术。
    如果从个人学习或者开源的角度看,无论做什么的尝试都是可以被包容并被鼓励的,只是作为一个开发团队,除非在公司层次上因为战略需要,确实给予你资源做平台或者组件,否则拿公司的资源去实现市面早已成熟的优秀框架与组件,这样的人是没有职业道德的。
    这个问题根本不应该从个人技术成长方面考虑,那是你自己的事,从公司的角度出发,关注的是生产效率和质量,事实上大家都为在成型的框架或组件基础上做一些修改和改进,但是自己从头搞一套市面上已经实现了很好的框架,然后通过公司的项目来测试自己的技术,代价就是效率和质量的下降,这种行为是可耻的。
    我想楼主所反对的山寨框架,就是指这样闭门造车或者拿公司资源给自己练手的恶劣行为,而不是扼杀大家通过做框架学习甚至开源的行为,反对方应该搞清这个逻辑,如果连简单逻辑都没法搞清就上来一顿高调唱下来,这样的思维能力也确实没什么能力开发什么好框架。
116 楼 andy54321 2009-03-27  
楼主分析的是
115 楼 csc365kl 2009-03-27  
没那么多精力去看那么多框架 我不是非主流
114 楼 hatedance 2009-03-27  
山寨是其成为非山寨的前身。没有必要打击山寨。
搞山寨跟具体项目里要不要采用某个山寨框架那完全是另外一个问题。

小公司发展初期,一般都会留下一些自创的框架。我觉得是无法避免的。人的水平也在成长。(qq是怎么来的?linux要不要?甚至为什么有了unix还要搞dos?)

有一点是肯定的,如果大家水平都很高了,又是新起的项目,自然应该不要用山寨框架。

举个例子,taobao的框架据说是自己搞的山寨框架,大家觉得有何不妥?
113 楼 buaalijie 2009-03-27  
我觉得可以稍微改一下:(要是都不造轮子,迟早老轮子废了,然后就没有用的了)

1,什么叫山寨?框架就是框架.

2,不是绝对不设计,不造轮子,而是慎重,能有始有终,
确定自己这个团队有这个能力.
112 楼 yuan 2009-03-27  
teclogid 写道
你觉得他的框架不好,你可以给他优化重构,如果你还没有达到依葫芦画瓢的水平,有什么资格来指责依葫芦画瓢的?没有谁学了几天java,就整了一个nb无比的框架。事物发展有个过程。
干站在那儿指责,眼高手低,这种人最让人鄙视。做事要务实。

说真的,我还真想这么干过。问题是这样的烂骨架上再披了好几层烂肉,要动起刀子来,那动作得多大你想过没有?要停下多少时间来干这个事你想过没有?干这事得有领导支持吧,可人家领导丢一句话“这可是XX博士设计的框架,能比开源的差?”我就没办法反驳了,你说我能干啥?
111 楼 coolnight 2009-03-27  
<div class="quote_title"><br /></div>
<div class="quote_title">最终结论都会是公司的问题而不是个人的问题</div>
<div class="quote_title"><br /></div>
<div class="quote_title">真无名 写道<br /></div>
<div class="quote_div">
<div class="quote_title">wendong007 写道</div>
<div class="quote_div">
<div class="quote_title">coolnight 写道</div>
<div class="quote_div">
<div class="quote_title">真无名 写道</div>
<div class="quote_div"><span style="font-size: large;"><strong>后来的同事没有人能摸透那个框架</strong></span><br /></div>
<br /><br />如果能够摸透spring,hibernate,不能摸透这么一个框架? <br /><br />大有可能是程序员没有动力去摸透它吧,排除能力的因素<br /></div>
<p> </p>
<p>不一定哦,如果文档都没写好,总不能让后续的人去研究源码吧,好的框架还是应该有一定的易用性的</p>
</div>
<p><br />都是原因,而且大家知道,一个02年的框架在概念上好多已经落后了,怎么去和用户不停变化的需求接轨? 就算摸透了又怎么样?</p>
<p>公司本身没有一个好的机制延续这个框架,就只能看着他慢慢废弃, 堕落。</p>
</div>
<p> </p>
110 楼 steeven 2009-03-27  
俺们公司还在用上个世纪的框架呢~

活的久不是错, 问题是活得太丑.

相关推荐

Global site tag (gtag.js) - Google Analytics