微信号:ac_aric

介绍:通俗幽默为您讲解编程技术!涉及JavaScript,Web,Java,架构,HTTP,JSON,MVC等方面

该如何选择框架?

2015-06-24 22:42 Aric

现在开源世界已经越来越流行,软件的开发也越来越简单。

一般来说,只需要选择几款开源框架,然后结合自己业务的特色,整合起来,就可以快速成为一个平台。


那么,如何选择一款好的技术框架呢?


大家都知道,选择一款技术框架,大多数都是作为平台底层运行,一旦使用,基本上没有替换的可能。

如果选择的框架有一些未预见的缺陷性,越到后期,越是如鲠在喉,吐不出,咽不下。

很多同学可能觉得这样说有些过分,我却觉得当一个有追求的程序员,在遇到这种境地时,恰恰就是这种感觉....


接下来,我们就聊聊如何选择一款好的框架。

首先,我认为一个好的框架,应该在如下特性上有突出表现:

扩展性

所有程序员都遇到过你所不能理解的需求,所不能忍受的功能!这些在开发中司空见怪,如果你选择的框架不具有强大的扩展性,后期需要各种Hardcode来解决问题,当Hardcode越积越多,直接导致你的平台不伦不类,之后就是永无休止的“技术债务”。

刚下海的程序员可能理解不了,但凡有点经验的开发人员,都很能理解这种“技术债务”,直接表现就是:平台不添加任何新功能,Bug还是几年修不完!


功能性

一个框架起码要具备它所该有的功能。如何定义该有呢?面对绝大多数的需求,都能满足。而特殊的需求,结合其扩展性也可实现。


易用性

难用的东西都被我们慢慢舍弃...这个不仅仅限于技术的世界,大家都懂的。

以前Struts2的高扩展性外加强大的功能,成就了SSH的威名,而Struts的使用难度,我曾经深有体会。

之后SpringMVC横空出世,轻量级,简单化征服了所有程序员!各大平台都充斥着SpringMVC的身影,如果你的印象还停留在SSH,说明你该补补课了。


流行性

每个人都有救世主情结,以为可以随时拯救万民于水火之中,但是往往需要我们出手时,我们却无能为力。

在技术世界,这种情结尤甚,每一种技术都会被吹嘘成XX的终结者,XX标准框架,XX技术规范,XX广泛支持...

这些程序员毫无抵抗力的词语充斥在你的耳边,让你欲罢不能!

有多欲罢不能呢? 来看看这些词语:粉色诱惑,蕾丝,制服, 少妇 ......

往往在这时候,各位程序员一定要清醒的记住:被大众所选择的,才是有前途的。

技术框架一旦定性,万难回头!大众选择的,最起码证明其价值,反过来想,如果这前进的路上,没有普罗大众的支持,简直是地狱之行!

如果你还是认为自己是救世主,选择救世主一样的框架,且你还真有这权利!!!那么,祝你好运。


社区性

这个和流行性是一体的,一旦大众选择,它所属的社区必然活跃。

当社区活跃时,框架的Bug,缺陷性都会暴露在处女座的眼光下,有了众多的处女座,即使框架官方不更新,还怕没有插件来弥补吗?


更新频率

框架的更新频率,直接影响着社区性,而社区性和流行性又息息相关。

更新频率更代表着解决Bug,增加新功能的硬性指标,说不定你今天还纠结的问题,明天官方已经出标准功能了呢?

技术世界日新月异,旧的不一定代表过时,但一定不会引领潮流。我想你也不会相信,最后一次在2011年更新的JSF,真的会引领Java Web走向组件化时代!

况且很多开发人员在选择框架时,看到最后更新是2011年,已经很难提起兴趣了,我就是这种!!


按照如上特性,对比你想选择的同类框架,相信很快就可以找到你中意的。

不过很多开发人员会问:扩展性,功能性,易用性这些指标,在选择时,根本不可能深入了解,要怎么办呢?


引用上篇文章所写:

一个框架,我认为最最最最重要的是社区性和更新速度!


根据这两条,就可以确定大部分的框架,不信,我们比比看!


WEB框架 [SpringMVC] [Struts] [JSF] =>SpringMVC

可以自己看看Maven的更新频率,我就不去截图了。


JSON框架 [Jackson] [Fastjson] => Jackson

这号称世界上最快的Fastjson,更新却是奇慢。也着实坑了我一回,无法随意定义时间格式,坑哭了!


CMD框架 [RequestJS ] [SeaJS] =>RequireJS

这号称[简洁优雅][明显没有Bug]的SeaJS,竟然没有一个插件,所谓的社区仅仅就是百度前10条,各种对比RequireJS的文章。好吧,我也被它坑过!我承认,我对有些词语没有抵抗力!


更多的,就不举例子了,建议直接看Maven的更新历史,我反正不信,一个没人使用的框架,还能保持一月一更新。










 
Aric 更多文章 React大热?再来泼冷水! 写不完的工作总结? 来~聊聊绩效考核 Java开发必用的工具包 “云”到底是什么 Bootstrap VS Semantic VS Foundation
猜您喜欢 轻盈传说之日月神教 iOS基础入门(二) PyTips 0x04 - Python 闭包与作用域 【安全攻防】梦想还需有,因它必实现——发现最新版iOS漏洞,OverSky团队专访 不为繁华易匠心