《开源框架那点事儿15》:借船下海还是造船下海

2023-11-07 10:50

本文主要是介绍《开源框架那点事儿15》:借船下海还是造船下海,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

    1.借船与借力
    三国时期,曹操率大军想要征服东吴,孙权、刘备联合抗曹,“草船借箭”即来源于此,意即运用智谋,凭借他人的人力或财力来实现自己的目标。我们来看看这个故事的几个关键环节。
    为了筹集十万支箭,诸葛亮找到鲁肃。诸葛亮说:“这件事要请你帮我的忙。希望你能借给我20只船,每只船上30个军士,船要用青布慢子遮起来,还要一千多个草把子,排在船两边。”第三天四更时候,诸葛亮邀请鲁肃一起,把船用绳索连起来向曹操对岸开去。那天江上大雾迷漫,对面都看不见人。当船靠近曹军水寨时,诸葛亮命船一字儿摆开,叫士兵擂鼓呐喊。曹操以为对方来进攻,又因雾大怕中埋伏,就派六千名弓箭手朝江中放箭,雨点般的箭纷纷射在草把子上。过了一会,诸葛亮又命船掉过头来,让另一面受箭。
    太阳出来了,雾要散了,诸葛亮令船赶紧往回开。这时船的两边草把子上密密麻麻地插满了箭,每只船上至少五、六千支,总共超过了十万支。鲁肃把借箭的经过告诉周瑜时,周瑜感叹地说:“诸葛亮神机妙算,我不如他。”

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

    3.框架开发的“借力”与“顺势”
    基础的框架开发并不难,但是要想做得优雅、健壮并不容易,要做出一个好的框架往往会花费大量的时间、人力财力。衡量一个框架是否优秀,往往有这些考量因素。
    (1)清晰的代码库,简单易用。代码复用是把一个功能写成一个模块,以便当再次需要相同功能的时候,可以直接使用,而不用重新开发。举个例子,假如你的网站需要验证码,你就可以把验证码这个功能单独提取出来以便复用。通常代码复用是通过类与对象来实现的,这也是面向对象编程与面向过程编程最主要的区别之一。以响应式网页设计为例,实现起来并不困难,但是要让它在所有的目标设备上都正常运作会有一点小棘手。而框架可以让这一工作变得简单。利用框架,你可以花最少的力气创建响应式且符合标准的网站,一切都很简单并且具有一致性。还有很多好处是显而易见的,比如说简单快速,以及在不同的设备之间的一致性等等。也就是说,框架最大的“势”就是简单易用,即使只掌握少量的Web知识,你也可以毫无障碍的使用它们。
    (2)粉丝使用过程的“倒逼”,强大的框架创新体系,营造良好的社区生态环境。“倒逼”是一种被动行为,是“迫使”、“反推”等词的升级版,该词强化了反常规、逆向促动之义。时下“倒逼”正在成为美谈,并曾经入选年度十大流行词。各行各业的问题动辄倒逼,似乎“倒逼则灵”。在许多领域,“倒逼”的确是这样大显身手的。作为一种开源力量,“倒逼”未尝不是一种正向力量!坚实的社区基础和积累,以及丰富的模板系统,往往可以为框架树立良好的口碑,形成一种“引力场”。尤其是需要有大量忠实的社区粉丝,也是框架实力的最好支持。作为社区网站,也要站在运营者角度和用户角度双方面来考虑上诸多问题。在用户角度上完善网站产品,去满足用户的核心需求,帮助用户解决问题。
    (3)简单的学习曲线,与相关应用集成更加容易。学习曲线的定义为“在一定时间内获得的技能或知识的速率”,又称练习曲线(practice curves)。人们为了知道学习进程中的现象和进步的快慢的详情,作为以后努力的指针,应用统计图的方法作一条线,把它表示出来。它源于“二战”时期的飞机工业,当产量上升时,生产每架飞机的劳动时间会极大地下降。随后的研究表明,在许多行业都存在这种现象。同样,在框架应用中,我们需要的不仅仅是模板,还更想要陈述式的可重用的模板框架。尤其需要能够创建可扩展的互联网应用。
    (4)文档支持与引导系统。写文档不容易同时也是需要花费一些时间的。作为潜在的用户,我们第一次接触开源项目,很可能就是通过阅读README文件。我们需要确保它很棒并且包含了有用的信息。以Tiny框架为例,我们始终认为文档是能为用户做的最好的事了!文档不仅能够节省用户大量的时间,也可以让用户确信,我们的确是把他们当做上帝,而且,我们是一帮有血有肉的人,不是一个产生代码的机器。
    (5)向后兼容,同时把握大势,对主流技术发展有一个准确的判断。关于软件开发的一件很令人生气的事,就是当你升级一个库但是数百个测试失败了。更让我生气的就是我还要重写我一半的基础代码,因为有人在没有任何警告的前提下决定打破公共的API。因此,向前看齐,同时致力于维护向后兼容性,也是我们重点把握的方向。以Tiny框架为例,我们常常会关注,使用这个项目有几个月了吗?是否觉得它还是不完整的?是否希望API在下一个版本会彻底地修改?是否在要求最多并且很老的项目中也能稳定安全的使用?当考虑到向后兼容时,也能有一个很好的跟踪记录。
    (6)可延续的技术支持。有些人可能关心许可证,但是真正使用框架或库的人很关心的是有保障的后续服务和支持。所以真正可用的框架包含了框架的可用及有保障的支持和服务,这样才能让客户在使用过程中更加放心。

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


 

欢迎访问开源技术社区:http://bbs.tinygroup.org。本例涉及的代码和框架资料,将会在社区分享。《自己动手写框架》成员QQ群:228977971,让我们一起动手,了解开源框架的奥秘! 

第4波活动:写书评,送精美开发图书!

这篇关于《开源框架那点事儿15》:借船下海还是造船下海的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/363117

相关文章

分辨率三兄弟LPI、DPI 和 PPI有什么区别? 搞清分辨率的那些事儿

《分辨率三兄弟LPI、DPI和PPI有什么区别?搞清分辨率的那些事儿》分辨率这个东西,真的是让人又爱又恨,为了搞清楚它,我可是翻阅了不少资料,最后发现“小7的背包”的解释最让我茅塞顿开,于是,我... 在谈到分辨率时,我们经常会遇到三个相似的缩写:PPI、DPI 和 LPI。虽然它们看起来差不多,但实际应用

Python Dash框架在数据可视化仪表板中的应用与实践记录

《PythonDash框架在数据可视化仪表板中的应用与实践记录》Python的PlotlyDash库提供了一种简便且强大的方式来构建和展示互动式数据仪表板,本篇文章将深入探讨如何使用Dash设计一... 目录python Dash框架在数据可视化仪表板中的应用与实践1. 什么是Plotly Dash?1.1

基于Flask框架添加多个AI模型的API并进行交互

《基于Flask框架添加多个AI模型的API并进行交互》:本文主要介绍如何基于Flask框架开发AI模型API管理系统,允许用户添加、删除不同AI模型的API密钥,感兴趣的可以了解下... 目录1. 概述2. 后端代码说明2.1 依赖库导入2.2 应用初始化2.3 API 存储字典2.4 路由函数2.5 应

Python GUI框架中的PyQt详解

《PythonGUI框架中的PyQt详解》PyQt是Python语言中最强大且广泛应用的GUI框架之一,基于Qt库的Python绑定实现,本文将深入解析PyQt的核心模块,并通过代码示例展示其应用场... 目录一、PyQt核心模块概览二、核心模块详解与示例1. QtCore - 核心基础模块2. QtWid

最新Spring Security实战教程之Spring Security安全框架指南

《最新SpringSecurity实战教程之SpringSecurity安全框架指南》SpringSecurity是Spring生态系统中的核心组件,提供认证、授权和防护机制,以保护应用免受各种安... 目录前言什么是Spring Security?同类框架对比Spring Security典型应用场景传统

Python结合Flask框架构建一个简易的远程控制系统

《Python结合Flask框架构建一个简易的远程控制系统》这篇文章主要为大家详细介绍了如何使用Python与Flask框架构建一个简易的远程控制系统,能够远程执行操作命令(如关机、重启、锁屏等),还... 目录1.概述2.功能使用系统命令执行实时屏幕监控3. BUG修复过程1. Authorization

无需邀请码!Manus复刻开源版OpenManus下载安装与体验

《无需邀请码!Manus复刻开源版OpenManus下载安装与体验》Manus的完美复刻开源版OpenManus安装与体验,无需邀请码,手把手教你如何在本地安装与配置Manus的开源版OpenManu... Manus是什么?Manus 是 Monica 团队推出的全球首款通用型 AI Agent。Man

SpringBoot集成图片验证码框架easy-captcha的详细过程

《SpringBoot集成图片验证码框架easy-captcha的详细过程》本文介绍了如何将Easy-Captcha框架集成到SpringBoot项目中,实现图片验证码功能,Easy-Captcha是... 目录SpringBoot集成图片验证码框架easy-captcha一、引言二、依赖三、代码1. Ea

Gin框架中的GET和POST表单处理的实现

《Gin框架中的GET和POST表单处理的实现》Gin框架提供了简单而强大的机制来处理GET和POST表单提交的数据,通过c.Query、c.PostForm、c.Bind和c.Request.For... 目录一、GET表单处理二、POST表单处理1. 使用c.PostForm获取表单字段:2. 绑定到结

修改若依框架Token的过期时间问题

《修改若依框架Token的过期时间问题》本文介绍了如何修改若依框架中Token的过期时间,通过修改`application.yml`文件中的配置来实现,默认单位为分钟,希望此经验对大家有所帮助,也欢迎... 目录修改若依框架Token的过期时间修改Token的过期时间关闭Token的过期时js间总结修改若依