装箱百万奖金,第六届全国工业互联网数据创新应用大赛火热报名中! 了解详情
写点什么

JavaScript 个性特点:编程语言界的平头哥

  • 2019-05-16
  • 本文字数:1640 字

    阅读完需:约 5 分钟

JavaScript个性特点:编程语言界的平头哥

JavaScript 这家伙已经疯球了,什么都不在乎的。无论你把什么玩意儿丢给他,他都能给你摆平。根本不要在这位老哥面前提什么编译错误。就是一坨???老哥都能给你运行。什么,你在担心他会给出一个错误的结果?都给你结果了还要啥自行车?如果你担心结果会是错的,那自己用 jest 或 mocha 弄一个测试就结了。


JavaScript 测试框架也是啥都不在乎。你用他测试啥都行。不要给我说什么依赖注入、接口过度泛化、反射机制!老哥跑测试就是一把梭!存根(stub),监视(spy),模拟(mock),抄起 sinon 就是干!端到端测试用 webdriverio,API 测试用 lodash-match-pattern,稳如狗!


你说 JavaScript 邋邋遢遢、不够帅气?人家根本就不在乎好吧。你要是嫌弃,就用 eslint、standardize it、prettier 这些工具来给老哥打扮打扮吧。


平头哥 JavaScript 浑身是胆,根本不在乎你怎么看。在老哥这里不要提什么私有(private)变量、保护(protected)变量。你尽管检查对象、更改函数,管你啥时候。平头哥一身正气,从不藏着掖着。你问他为啥会这样?艺高人胆大啊!


JavaScript 老哥从不磨叽。等什么等啊,一看就不是平头哥的作风。JavaScript 从来不等那些数据库存取、API 调用什么的。错过了 await 关键字、没完成 Promise 对象,没关系!还是该吃吃该睡睡!


想来点静态类?老哥请 TypeScript 或 Flow 兄弟们来帮忙就成。不过你可能会觉得这有点像给平头哥戴个游泳圈。是有点违和,最后任何类型的声明都能把他轻松击败。(不过,现在还有人在乎“类型安全”什么的吗?)



平头哥喜欢用工具,JavaScript 也是。


last count(http://www.modulecounts.com/)统计出,NPM 包的项目里有超过 800,000 个模块——大约是 Maven(Java)的三倍了。所以就算这里面的大部分模块和泥蛋一样又脏又丑又怎样,每个月有 180 亿的下载量呢,不服都不行。


平头哥啥都能吃:毒蛇、猛禽蛋、蝎子,来者不拒,最爱的是蜜蜂幼虫。是什么东西不重要,在平头哥眼里都是“吃的”。JavaScript 也能消化一切东西,管你喂给他什么,对他来说全是“对象”。更绝的是,解构和展开语法让 JavaScript 能把对象嚼得碎碎的,吃得更美味、更有营养。


JavaScript 才不在乎怎么和别的语言接口:protobuf 啦,swagger 定义啦,RESTish 啦,graphQL 啦,都招呼上来。老哥就是干这活的,大杂烩 API 把所有接口方式照单全收,交给他处理就行。


平头哥 JavaScript 家的小弟们

Lodash 也是个狠角儿。你要是觉得 JavaScript 中还需要用 for 循环 while 循环什么的,Lodash 就笑笑不说话。如果你在 JavaScript 里还用原始的 foreach、map、filter 等语句,Lodash 表示不想理你。如果你在做字符串处理、类型检查或给对象集变形时还在自己手动写代码,Lodash 只能对你说:对不起我们不认识。


在操控日期方面,momentjs 有自己的想法。他不会在意什么时区、时间存档,甚至连你在哪儿他都不在乎。无论你输入的日期格式有多蠢,他都能抽丝剥茧找到其本质所在,然后输出你所在时区的正确时间格式。


让我们来看看还有哪个老实人需要 ORM(对象关系映射),我们来嘲笑他。反正 JavaScript 不需要。关系型数据表本质不是 OOP 对象,它还想骗你多动脑筋。有了 knexjs,JavaScript 可以避免数据库/对象不匹配问题、有漏洞的 ORM 抽象问题,而且一般都能跳过冗余的 OOP 模型定义,因为有 SQL 数据模型就够了。


你是谁,你来自哪里,你现在要做什么?passport 模型能帮你回答这一深奥的哲学问题。


忘了你那神圣的前端 MVC 模式吧!React 以及他的朋友 redux,vue 等等已经彻底毁灭了这一误用的、过度泛化的教条。


还有一些工具如 bluebird、axios、babel 等等,这些兄弟们一起协助 JavaScript,让平头哥更加无所畏惧。



被用了那么多年,也被骂了那么多年,JavaScript 脸皮已经相当厚了。各种编程实践都离不开他,世界各地的开发者们也都在吐槽他。但无论如何,老哥在 GitHub 上每年有 230 万下载量,我管你怎么想叻~


英文原文链接:


https://hackernoon.com/javascript-is-the-honey-badger-of-languages-117ebe631bc7



2019-05-16 18:176245

评论 4 条评论

发布
用户头像
赞翻译
2019-05-20 15:24
回复
用户头像
大神,这技术能让我跪一个春夏秋冬了,来我们公司吧,月薪一定比你现在高威我66631280401
2019-05-17 11:02
回复
用户头像
好皮
2019-05-17 10:45
回复
用户头像
pi
2019-05-17 10:44
回复
没有更多了
发现更多内容

天翼云数字政府智慧数据中台通过认证

天翼云开发者社区

轻松上手Fluentd,结合 Rainbond 插件市场,日志收集更快捷

北京好雨科技有限公司

Kubernetes EFK Fluentd rainbond

web前端开发培训 | React面向组件编程

@零度

前端开发 React

删除视图——基于函数的视图 Django

海拥(haiyong.site)

Python django 6月月更

ironSource Luna 推出苹果搜索广告限时优惠,注册即享3个月免费服务

科技热闻

10款超牛Vim插件,爱不释手了

Jackpop

知识管理在业务中的价值如何体现

小炮

知识管理

安全信得过!天翼云数据安全管理平台通过评测

天翼云开发者社区

TDengine 连接器上线 Google Data Studio 应用商店

TDengine

tdengine 时序数据库 Google Data Studio

wallys/WiFi6 MiniPCIe Module 2T2R 2×2.4GHz 2x5GHz

wallys-wifi6

wifi6 mtk7915 mtk7975

定金预售的规则思路详解

CRMEB

加密市场进入寒冬,是“天灾”还是“人祸”?

股市老人

网络安全的五大特点有哪些?五大属性是什么?

行云管家

网络安全 数据安全 网络安全法

新版负载均衡WebClient CRUD

Xiao8

微服务架构 微服务框架 6月月更

"不敢去怀疑代码,又不得不怀疑代码"记一次网络请求超时分析

华为云开发者联盟

前端 开发 HTTP 华为云

假如,程序员面试的时候说真话

AlwaysBeta

程序员 面试

uni-app进阶之https请求方式/状态管理【day11】

黎燃

6月月更

【Meetup 预告】RocketMQ OpenMLDB Connector,实时数据到特征工程的高速传输

第四范式开发者社区

机器学习 数据库 开源 云原生 特征平台

天翼云乘风新基建,构建数字化转型“4+2”能力体系

天翼云开发者社区

6月《中国数据库行业分析报告》发布!智能风起,列存更生

墨天轮

数据库 TiDB 国产数据库 列式存储

力扣每日一练之双指针2Day9

京与旧铺

6月月更

多年亿级流量下的高并发经验总结,都毫无保留地写在了这本书中

博文视点Broadview

MongoDB在腾讯零售优码中的应用

杨亚洲(专注MongoDB及高性能中间件)

mongodb 分布式数据库mongodb 构架 NoSQL 数据库 数据库·

Development status of full color LED display

Dylan

LED display full-color LED display Outdoor LED display

入驻快讯|欢迎极狐GitLab 正式入驻 InfoQ 写作社区!

极狐GitLab

gitlab git 学习 #GitLab DevOps工具

畅享高性能计算!天翼云HPC解决方案来了

天翼云开发者社区

R 和 Python用于统计学分析,哪个更好?

Jackpop

直播出海 | 国内直播间再出爆品,「外卷」全球如何致胜

融云 RongCloud

口令安全是什么意思?等保2.0政策中口令安全标准条款有哪些?

行云管家

网络安全 口令安全 等保 等保2.0 口令

加密市场进入寒冬,是“天灾”还是“人祸”?

鳄鱼视界

JavaScript个性特点:编程语言界的平头哥_编程语言_John Charles McLaughlin_InfoQ精选文章