不要盲目跟着 JavaScript 的趋势走
云栖号资讯:【点击查看更多行业资讯】
在这里您可以找到不同行业的第一手的上云资讯,还在等什么,快来!
有一天,你在浏览器里输入了 twitter.com ,然后看到了某人发的一条关于如何使用 React Hooks 的新消息。但是,由于某些原因,你的公司或团队并没有转而使用 Hooks。或者,也许你正在使用它们,但不是以一种新的“符合潮流”的方式。也许你正在使用 Vue.js 或者 Angular,但是 React Hooks 无处不在。
这一天,你开始质疑你代码库中的内容是否正确?你是否应该用你刚刚读到的内容来重构那部分逻辑?得出答案后,你开始想象它在自己的代码中会是什么样子。
现在,你突然有了使用它的冲动。你告知团队负责人,或者向整个团队发送消息介绍这个又酷又新潮的方法,然后提出你要开始使用它。
重写代码
不久前, @ThePracticalDev 的 Twitter 账户上出现了一本假想著作的封面。早在 2016 年,取笑多变的 JavaScript 世界就是一种时尚,虽然方式与今天有所不同。
嘘,我发明了时间机器(不要告诉任何人)!让我们闪回到 2016 年。嗖的一声!我们到了。JavaScript 生态圈看起来是这样的:
如果你正在使用 JavaScript 框架或是想要使用一个框架,你可能会选择 Angular.js。但是,你很快就会看到这样的消息:Angular 2 会需要你重写几乎所有的东西。而且,React.js 即将到来,并日渐成熟。当然,还是有使用 Vanilla JS 和不使用框架的人。2016 年,不使用框架仍然是一个流行的观点,但这个观点正在慢慢消失。
在了解了这一切之后,你会怎么做?你会选择哪条路?为什么?答案似乎很明显,因为你来自未来。但是,如果你之前决定使用 Angular.js,那么几年之后,你将尝试使用新的 Angular 版本并重写你的代码。如果你选择使用 React,你将成为一个幸运的赢家,因为现在每个人都搭了 React 的便车。现在,你可能想放弃类组件,借助那些妙不可言的钩子使用函数组件,对吧?好吧,至少它不像 Angular.js 到 Angular 2 的变化那么大,不需要学习全新的 API,对吧?
选择这么多,时间这么少。我们该怎么做?
不管我们现在选什么,过去选什么,这都不重要。我们仍然会被诱惑或者不得不重写我们的代码。这样做的理由可能有许多:
你的公司以前使用 [框架名],但现在已经无法招聘到新人了;
你觉得以前的解决方案不再有效,需要引入一些新东西;
你屈从于行业趋势,想要使用最新最好的。
除非我们打破这个循环。
打破循环
不断改进并提供一个更好的新版本已经成为我们这个行业的基因。我们总是非常迫切地希望制定更高效、更简单、更巧妙、更健壮的解决方案。违背不断学习和进步的理念,就会走到现如今一切人和事的对立面。我现在不打算走这条路,但是如果你想在将来听到更多关于这方面的信息,可以考虑订阅这份简报。
学习新东西的想法是好的,我同意这一点,但是你应该多久学习一次呢?看看 JavaScript 的世界吧,这里经常会出现新的想法、博文、库、框架和某个不知名的新玩意。当它变得越来越流行,人们很快就会尝试采用它。我并不是说你不应该采用新的东西,也不是说你不应该考虑解决方案的不同方法,完全不是!我的意思是,降低下频次。
让我们更加务实点。我以前使用过 axios ,它非常棒。你可以适当地测试它,它获得了广泛的支持,有很多的点赞(GitHub 星),等等。然后,我看到一篇博文,它告诉你替换 axios 并开发自己的获取逻辑。
在读了这篇文章的标题“用一个简单的自定义 fetch 包装器替换 axios ”之后,你会从头开始思考这个问题,质疑自己的选择。
我不会详细探讨你是否应该按照这篇博文所说的那样做,那篇文章本身就很好地做到了这一点。我可以帮你做基本的决定。你现在对 axios 满意吗?如果答案是肯定的,那么最好不要考虑替代它。对你或你的团队来说,axios 会带来困难吗?如果答案是肯定的,那么就按照博文所说的去做,看看效果如何。
简而言之:不要轻信炒作。试着去“感受”什么对你有效,然后再去做。试着不要盲目跟随那些炫技的新推文、博客文章、Hacker News 热文、你应该或不应该做什么的热门话题标签。
炒作驱动的开发
炒作在我们行业很常见。还记得 NoSQL 吗?或者是每个人都为之疯狂的微服务?或者是人工智能 / 机器学习的爆发?这样的例子不胜枚举。人们总是会对新的、突破性的技术和想法感到兴奋。Gartner 在描绘技术炒作周期方面做得非常出色:
上图展示了一个典型的新兴技术的生命周期。你是否意识到你现在使用的任何东西都可能会落在图表的某个部分? Ayman 做了一个更详细的炒作周期图:
对照这张图回想一下,就最近的 JS 趋势来说,它处于哪个位置?
如何应对炒作
在生活中,炒作和兴奋有时是有用的。没有它,生活将会乏味而无聊。偶尔跟风可能会让你精神振奋,但是你应该首先自己做好调查。
当尝试采用一个被大肆宣传的全新的库或框架时,请记住这一点。问问你自己和你的团队:
在做决定之前研究并测试了吗?
阅读博客文章、推特和公告有帮助,但更好的做法是,不管某个东西是否适合你,你都要从中获得经验。如果你计划用什么,就尝试构建一个原型。看看它是如何与你正在做的其他事情“共舞”的。
如果你计划在团队层面上做一些事情,可以尝试团队黑客马拉松。黑客马拉松是与你的团队一起测试新技术的好方法,也是你为解决方案疯狂的地方。然后,你可以和团队进行某种回顾,讨论利弊。
它解决了你的问题吗?代价是什么?
你当前的实现有什么特别的问题吗?如果是的话,测试一下,看看新技术是否能解决这个问题。要花多少时间?学习它和重写你的解决方案值得吗?这会在多大程度上减缓团队的开发工作?
听取他人的意见了吗?
如果你在一家小公司工作,或者团队里的成员没那么有经验,这个问题可能会很棘手。试着征求架构师或高级工程师的意见。不能仅仅因为某个库适合 AirBnB 和他们的网站,你就要采用它,可能对你来说它不是最好的,你可能忽略了其中的某些方面。有时候,与有经验的人交谈是一种特权,如果你有,就好好利用它!
如果你是一名高级工程师,试着和一名初级工程师或者没你那么有经验的人交谈。许多公司都在实施所谓的“反向辅导”项目,由初级员工指导公司的资深员工。资深员工的经验可以换来初级员工的新观点。你会惊讶于自己能学到和分享的东西。
总之,尽量不要在你刚刚看到某个东西时就匆忙做出决定。
如果你喜欢这篇文章,可以把它分享给你的朋友和同事。如果你有什么想法,也可以通过推特(@nikolalsvk)联系作者。
作者介绍:
Nikola Đuza 在塞尔维亚诺维萨德工作和生活,主要使用 JavaScript 和 Ruby 进行开发。你可以在 Twitter 上关注他。
【云栖号在线课堂】每天都有产品技术专家分享!
课程地址:https://yqh.aliyun.com/zhibo立即加入社群,与专家面对面,及时了解课程最新动态!
【云栖号在线课堂 社群】https://c.tb.cn/F3.Z8gvnK
原文发布时间:2020-07-06
本文作者:Nikola Đuza
本文来自:“InfoQ”,了解相关信息可以关注“InfoQ”
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
智能建筑:利用物联网保护工作场所和公共空间
云栖号资讯:【点击查看更多行业资讯】在这里您可以找到不同行业的第一手的上云资讯,还在等什么,快来! 冠状病毒大流行迫使我们对物理场所进行全面的重新评估,包括拥有智能建筑和智能工厂的工作场所。员工和消费者不会进入他们认为不安全的场所。展望未来,企业必须采取前所未有的安全与隐私措施。幸运的是,物联网技术有助于实现这一目标。 病毒流行时期的智能建筑 在可预见的未来,以人为本的健康实践对于日常工作/生活至关重要,这不仅是对抗冠状病毒的重要组成部分,而且也是对抗其他潜在传染病爆发的重要组成部分。企业正在设计预防策略,而这些策略必须结合技术驱动的解决方案。展望未来,企业将需要掌握关于任何人进入和使用其场所的实时数据,并且必须在不损害隐私的情况下收集这些数据。 这不仅提供了所需的见解,以尽量减少在建筑物或场所中的潜在健康风险,而且还通过可视化“数字和物理意识”来解决不确定性或焦虑感,即建筑物或场所正在以最高的健康和安全级别进行监控和管理。 使用物联网保护工作场所和公共空间 以下是企业面临的一些挑战,以及解决这些挑战的技术: 物理距离跟踪。在从零售店到办公楼再到娱乐区的各种场所中,现在和将来都有必要测...
- 下一篇
木兰编程语言重现——范围语法“下限..上限 by 间隔”,重构
在支持 Python 的 range 之外,木兰还支持如下的等价语法。个人感觉这样的语法更直观易读一些: 闭区间 for 数 in 0..2 { println(数) } 输出: 0 1 2 左闭右开区间: for 数 in 0..<2 { println(数) } 输出: 0 1 对应的带间隔取数: 这是本周重现的语法。 for 数 in 4..-1 by -2 { println(数) } 输出: 4 2 0 左闭右开区间: for 数 in 0..<4 by 2 { println(数) } 输出: 0 2 代码统计 下面是几个主要部分的代码行数统计,格式为:上周->本周。 测试 木兰测试用例:900 -> 1068 运行测试.py,检验所有木兰测试代码片段:143 -> 144 未变 test语法树.py,确保生成的语法树与原始版本一致:63 实现:1720 -> 1898 分析器/语法分析器.py:676 -> 792 分析器/词法分析器.py:123 -> 1...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- 设置Eclipse缩进为4个空格,增强代码规范
- CentOS8安装Docker,最新的服务器搭配容器使用
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- CentOS8编译安装MySQL8.0.19
- SpringBoot2整合Redis,开启缓存,提高访问速度
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- Hadoop3单机部署,实现最简伪集群
- CentOS7,CentOS8安装Elasticsearch6.8.6