写点什么

超越库和框架的技术创新

Nils Norman Haukås

  • 2022-05-05
  • 本文字数:2385 字

    阅读完需:约 8 分钟

超越库和框架的技术创新

本文最初发布于 Nils Norman Haukås 的个人博客。


我认为,我们的眼光不应局限于库和框架,而应该重新发现模式和原则的价值,这样可以减少破坏性变化,让我们构建的东西更持久。


一段时间以来,我一直秉持“编写库而非框架”的理念。最近,我开始思考,似乎可以对这个观点做一个富有成效的扩展,即原则胜过模式,模式胜过库,库胜过框架。


让我们澄清一下这几个术语:


  • 框架:这(通常)是别人的代码调用你的代码。为了实现这样的调用,你的代码需要符合框架所定义的约束。通常,这些约束有非常明确的界限,编码时很难绕过。反过来说,在框架的约定和规范下编码,你往往会获得很多有用的功能,加快编码速度。

  • 库:这(通常)是从你的代码中调用别人的代码。与框架相比,库对你的代码施加的限制比较少。通过使用一个或多个库,你可以重用别人的代码来解决自己的问题。库更容易组合和互换,而同时使用不同的框架可能会带来麻烦。

  • 模式:这是一种描述性的、可重用的代码编写方法(见:软件设计模式)。模式在模糊性、适用性和规定性方面有很大的差异。举例来说,有尽早返回模式、构建者模式、行为者模型、模型 - 视图 - 控制器、洋葱架构、微服务、宏单体、单库和流式架构等。这些只是我能想到的一些模式,涉及编程模式的书很多。

  • 原则:这是一些一般指导原则或是以规则形式表达的理念(如经验法则),可以帮助你写好代码。尽管与几千年来一直在建造房屋的木工领域相比,编程是一个非常年轻的领域,但是开发人员已经设法提炼出一些有用的原则来帮助他们开展工作。举例来说,有 SOLID 原则、不要重复代码(DRY)、不要过度设计(YAGNI)、敏捷宣言、迪米特法则、海勒姆法则。还有很多,在我写这篇文章的时候,我刚刚发现了这个收集编程原则的网站,很不错!


这里我必须得补充一句:不要过度使用和 / 或在不适合的情况下使用它们(见:工具法则)。例如,这里有一篇题为“错误的抽象”的文章,开发者 Sandi Metz 对开发人员不惜一切代价应用 DRY 原则的倾向做了精彩的点评。

谁来维护维护者?


我在这里并不是说我们应该停止使用框架和库,但我们应该认识到,使用它们是一种权衡,我们付出一些成本并获得一些功能。比如说,保持更新的成本。代码库更新滞后可能会遭受漏洞攻击。相反,如果你不加辨别地安装最新的更新,就为供应链攻击(恶意代码被插入到一个或多个软件包中)打开了大门。


除了与安全有关的成本外,还有一个风险是,你所依赖的代码会因为作者倦怠或内部团队变化而被废弃。显然,一直都有各种各样的东西被停止使用。对此,你可能会反驳说:“它是开源的,我们可以创建分叉。”这倒是,但你会维护它吗?我认为,在添加任何特定的依赖时,问问自己:放弃这个依赖的可能性有多大?如果出现了这样的情况,我应该怎么做?维护它还是换掉它?至少,库往往更容易替换。


我们如何衡量一些代码项目是否有被放弃的风险?我们倾向于看最近的活动,只要试着在 Github 上搜索”is this dead“。面对问题的冲击,作者要么宣布项目破产并将其归档,要么不对问题做出回应并逐步淡出人们的视线,要么加速推出新的功能并扩大代码的适用范围,解决任何用户遇到的任何问题。屈服于这样的功能热,很快就会导致破坏性的变化,需要重构代码,记录升级路径,并对那些拼命想跟上所有变化的开发者的问题做出回应。任何成熟稳定的技术都有可能被宣布“死亡”,并被这个超级敏感的行业所剔除。关于这一点,我在文章“好代码之死”中提到过。


使用他人的代码也会带来隐性的变更成本,升级或放弃都会很痛苦。框架和库通常会引入它们特有的概念。换句话说,如果你决定转到另一个框架或库,那么你通过使用和调试这个工具所积累的所有经验可能都将变得毫无用处。而且,眨眼之间,你所依赖的框架就会发布一个重要的版本升级,删除旧版本中特有的概念,使你辛苦积累的所有经验都失去意义。再加上沉没成本悖论,这种成本很容易在不知不觉间加剧。

超越库和框架


我觉得,在我们寻找新的、更好的方法构建技术时,我们不应该把我们的思维局限在从库和框架中寻找答案。


但是,除此之外还有什么呢?


在开始回答这个问题之前,我想指出我在网络上偶然发现的一些有趣的暗流。首先,Adrian Holovaty 有一个有趣的演讲,题目是“一个框架作者的反框架故事”。他认为,在没有框架的情况下也完成可以构建出功能丰富的 Web 应用。其次,当读到 Remix Run 框架的理念时,我感到万分惊喜:


我们的抽象足以保证你的应用程序的性能 [......],而且不会隐藏底层技术。了解了如何在 Remix 中用 links 预取资产,就学会了如何在任何网站中预取资产。


这句话读起来就像是我上面提到的变更成本的解药。学习一些技术意味着学习可转移的知识,这是一个加分项。


第三,我了解了“Stackless Way”的概念,并阅读了 Elise Hein 写的一篇非常有趣的文章。她探讨了这种非正统的想法,即追求不设置构建步骤、不使用框架的“无栈(stackless )”。


当我创立网络组件工作室时,我也选择探索一下自己可以在多大程度上采用无栈方法。我发现,现代浏览器功能非常强大,可以在不引入外部代码的情况下编写出丰富的功能。我感觉这相当令人振奋和自由。是的,这种方法仍有一些不完善的地方。不过,这里所缺少的可能不是成熟的框架或库,而是一本模式和原则手册。


想象一下,因为我们投入时间去发现和建立模式与原则,而使得一个行业不再那么依赖库和框架。我相信,这样的未来可以减少维护者的倦怠,减少破坏性的变化,为我们带来更优秀、更长久的程序。

今后,你仍然会发现我在使用框架和库,我甚至会编写一些新的框架和库。不过,这种无栈方法、有用的模式和原则、可转移的知识,是我要寻求和探索的。


作者 Nils Norman Haukås 是 Netlife Bergen 的首席技术官,他负责删除代码,打造技术卓越的安全空间,并研究减少会议的新方法。


查看英文原文:


https://nilsnh.no/2022/04/09/innovating-beyond-libraries-and-frameworks/

2022-05-05 18:373080

评论 1 条评论

发布
用户头像
翻译的相当糟糕,甚至比不上机翻
2022-05-07 08:49
回复
没有更多了
发现更多内容

为什么 80% 的码农都做不了架构师?

秃头小帅oi

秒验资深玩家熬夜整理的15个常见问题,拿走不谢!

MobTech袤博科技

数仓调优实战:GUC参数调优

快乐非自愿限量之名

数仓 数仓架构

高维解码|Redis 收紧许可证!开源软件公司如何在云时代生存?

Zilliz

redis 开源 许可证 Zilliz 开源公司

软件测试学习笔记丨自动化测试策略

测试人

软件测试 自动化测试 测试开发

10年产品经理教你快速提升消息推送的点击率

MobTech袤博科技

K8s技术全景:架构、应用与优化

不在线第一只蜗牛

架构 Kubernetes 容器

一文快速读懂消息推送的到达率、转化率和卸载率

MobTech袤博科技

都2024年了,你还不知道一键登录怎么选吗?

MobTech袤博科技

内部人士揭秘:千万不要关闭手机一键登录验证

MobTech袤博科技

云手机提供私域流量变现方案

Ogcloud

私域运营 私域流量运营 云手机 海外云手机 跨境云手机

10年大厂运营大咖告诉你,如何有效应对消息推送厂商配额

MobTech袤博科技

开创加密资产新纪元:深度解析ERC-314协议

区块链软件开发推广运营

dapp开发 区块链开发 链游开发 NFT开发 公链开发

如何搭建企业级MQ消息集成平台

RestCloud

ipaas MQ消息

流量见顶了以后,APP为何仍然要使用推送通知?

MobTech袤博科技

MobTech积极参与鸿蒙生态建设,HarmonyOS NEXT鸿蒙星河版产品即将发布

MobTech袤博科技

抖音、小红书都在用的秒验一键登录验证方式,到底好在哪?

MobTech袤博科技

iOS 开发中上传 IPA 文件的方法(无需 Mac 电脑)

20余年运维实践经验总结!一本书掌握数字化运维方法

嘉为蓝鲸

运维 数字化转型 运维管理 IT 运维

10分钟说清楚,秒验一键认证除了快,还有哪些优点?

MobTech袤博科技

海外云手机助力出海电商引流获客

Ogcloud

云手机 海外云手机 云手机海外版 电商云手机 跨境云手机

如何选择高防服务器?稳定性与安全性兼备

一只扑棱蛾子

高防服务器

2024年本机一键验证登录最强指南已出,请查收!

MobTech袤博科技

海外云手机:跨境电商引流的利器

Ogcloud

云手机 海外云手机 云手机海外版 国外云手机 跨境云手机

哪个好人,2024年还在做push攻略科普啊!

MobTech袤博科技

聚道云连接器打通红圈CRM和金蝶云星辰,赋能环境科技公司数字化转型

聚道云软件连接器

案例分享

避免IT项目延误的终极指南:揭秘10大原因及解决方案

爱吃小舅的鱼

项目管理 项目经理 IT项目管理

3分钟教你最大化利用APP消息推送(Push)在运营中的优势

MobTech袤博科技

秒验:让APP验证和登录远不只是便捷

MobTech袤博科技

超越库和框架的技术创新_大前端_InfoQ精选文章