返回首页 自己动手写框架

借船下海还是造船下海

1.借船与借力

三国时期,曹操率大军想要征服东吴,孙权、刘备联合抗曹,“草船借箭”即来源于此,意即运用智谋,凭借他人的人力或财力来实现自己的目标。我们来看看这个故事的几个关键环节。

为了筹集十万支箭,诸葛亮找到鲁肃。诸葛亮说:“这件事要请你帮我的忙。希望你能借给我20只船,每只船上30个军士,船要用青布慢子遮起来,还要一千多个草把子,排在船两边。”第三天四更时候,诸葛亮邀请鲁肃一起,把船用绳索连起来向曹操对岸开去。那天江上大雾迷漫,对面都看不见人。当船靠近曹军水寨时,诸葛亮命船一字儿摆开,叫士兵擂鼓呐喊。曹操以为对方来进攻,又因雾大怕中埋伏,就派六千名弓箭手朝江中放箭,雨点般的箭纷纷射在草把子上。过了一会,诸葛亮又命船掉过头来,让另一面受箭。

太阳出来了,雾要散了,诸葛亮令船赶紧往回开。这时船的两边草把子上密密麻麻地插满了箭,每只船上至少五、六千支,总共超过了十万支。鲁肃把借箭的经过告诉周瑜时,周瑜感叹地说:“诸葛亮神机妙算,我不如他。”

2.顺势而为

“明者因时而变,知者随事而制”这个用典,出自汉代桓宽《盐铁论》卷二之枕边第十二篇。汉宣帝的中兴之道,得益于诸多方面,根本的一条就是“明者因时而变,知者随事而制”,了解民情,把握趋势,与时俱进,开放而谋实。同样,作为开发团队,在互联网竞争时代,也要干很多事。有些事很顺利,有些却坎坎坷坷的,有些根本就干不成。细想一下,事情的成败原因可以归结为一个字,势,顺势而为,如水推舟,事半功倍;逆势为之,则逆水行舟,艰难险阻,功败垂成。

势是什么,就是一种趋势,一种方向,一种潮流。顺势而为,关键在于一个“势”字,要有一双慧眼,判明大势进退;要有一颗名亮亮的新,悟达通透。做到“顺势而为,乘势而上”。

3.框架开发的“借力”与“顺势”

基础的框架开发并不难,但是要想做得优雅、健壮并不容易,要做出一个好的框架往往会花费大量的时间、人力财力。衡量一个框架是否优秀,往往有这些考量因素。

  • 清晰的代码库,简单易用。代码复用是把一个功能写成一个模块,以便当再次需要相同功能的时候,可以直接使用,而不用重新开发。举个例子,假如你的网站需要验证码,你就可以把验证码这个功能单独提取出来以便复用。通常代码复用是通过类与对象来实现的,这也是面向对象编程与面向过程编程最主要的区别之一。以响应式网页设计为例,实现起来并不困难,但是要让它在所有的目标设备上都正常运作会有一点小棘手。而框架可以让这一工作变得简单。利用框架,你可以花最少的力气创建响应式且符合标准的网站,一切都很简单并且具有一致性。还有很多好处是显而易见的,比如说简单快速,以及在不同的设备之间的一致性等等。也就是说,框架最大的“势”就是简单易用,即使只掌握少量的Web知识,你也可以毫无障碍的使用它们。

  • 粉丝使用过程的“倒逼”,强大的框架创新体系,营造良好的社区生态环境。“倒逼”是一种被动行为,是“迫使”、“反推”等词的升级版,该词强化了反常规、逆向促动之义。时下“倒逼”正在成为美谈,并曾经入选年度十大流行词。各行各业的问题动辄倒逼,似乎“倒逼则灵”。在许多领域,“倒逼”的确是这样大显身手的。作为一种开源力量,“倒逼”未尝不是一种正向力量!坚实的社区基础和积累,以及丰富的模板系统,往往可以为框架树立良好的口碑,形成一种“引力场”。尤其是需要有大量忠实的社区粉丝,也是框架实力的最好支持。作为社区网站,也要站在运营者角度和用户角度双方面来考虑上诸多问题。在用户角度上完善网站产品,去满足用户的核心需求,帮助用户解决问题。

  • 简单的学习曲线,与相关应用集成更加容易。学习曲线的定义为“在一定时间内获得的技能或知识的速率”,又称练习曲线(practice curves)。人们为了知道学习进程中的现象和进步的快慢的详情,作为以后努力的指针,应用统计图的方法作一条线,把它表示出来。它源于“二战”时期的飞机工业,当产量上升时,生产每架飞机的劳动时间会极大地下降。随后的研究表明,在许多行业都存在这种现象。同样,在框架应用中,我们需要的不仅仅是模板,还更想要陈述式的可重用的模板框架。尤其需要能够创建可扩展的互联网应用。

  • 文档支持与引导系统。写文档不容易同时也是需要花费一些时间的。作为潜在的用户,我们第一次接触开源项目,很可能就是通过阅读README文件。我们需要确保它很棒并且包含了有用的信息。以Tiny框架为例,我们始终认为文档是能为用户做的最好的事了!文档不仅能够节省用户大量的时间,也可以让用户确信,我们的确是把他们当做上帝,而且,我们是一帮有血有肉的人,不是一个产生代码的机器。

  • 向后兼容,同时把握大势,对主流技术发展有一个准确的判断。关于软件开发的一件很令人生气的事,就是当你升级一个库但是数百个测试失败了。更让我生气的就是我还要重写我一半的基础代码,因为有人在没有任何警告的前提下决定打破公共的API。因此,向前看齐,同时致力于维护向后兼容性,也是我们重点把握的方向。以Tiny框架为例,我们常常会关注,使用这个项目有几个月了吗?是否觉得它还是不完整的?是否希望API在下一个版本会彻底地修改?是否在要求最多并且很老的项目中也能稳定安全的使用?当考虑到向后兼容时,也能有一个很好的跟踪记录。

  • 可延续的技术支持。有些人可能关心许可证,但是真正使用框架或库的人很关心的是有保障的后续服务和支持。所以真正可用的框架包含了框架的可用及有保障的支持和服务,这样才能让客户在使用过程中更加放心。

郑和下西洋,没有人关心他使用的是什么船;诸葛亮借箭,也没有人关心他使用的是谁的船。不过,他们都很轻松的完成了自己的目的。造船下海,还是借船下海,关键还是在于顺势而为,把握大势!