写点什么

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

2019 年 5 月 16 日

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 年 5 月 16 日 18:176074

评论 4 条评论

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

对于一款软件而言,完备的功能固然重要,但交互体验也不该被忽视

Philips

Java 敏捷开发 UI .net core 交互设计

LeetCode题解:88. 合并两个有序数组,双指针+从后往前,JavaScript,详细注释

Lee Chen

LeetCode 前端进阶训练营

低/零代码平台的优点有哪些?

代码制造者

编程语言 低代码 零代码 信息化 编程开发

Windows AD巡检报错处理

BigYoung

windows AD 报错 巡检

对于一款软件而言,完备的功能固然重要,但交互体验也不该被忽视

Learun

Java 敏捷开发 快速开发 .net core

当代一线城市年轻人工作生活实录(HR篇)

Learun

Java 敏捷开发 快速开发 .net core

linux入门系列3--常见的linux远程登陆管理工具

黑马腾云

Linux xshell securecrt putty finallshell

初识WebRTC

soolaugust

WebRTC

当代一线城市年轻人生活工作实录(蓝领打工仔篇)

Philips

Java .net 敏捷开发 快速开发 MES系统

白话讲解:消息队列到底解决了什么问题?

博文视点Broadview

读书笔记 分布式 RocketMQ 中间件 消息队列

C++ 借来的资源,如何还的潇洒?

小林coding

c c++ 编程 编程习惯 内存管理

不懂 ZooKeeper?没关系,这一篇给你讲的明明白白

海星

Java zookeeper 分布式

Linux入门系列1--环境准备及Linux安装

黑马腾云

Linux centos 运维 操作系统

当代一线城市年轻人工作生活实录(HR篇)

Philips

Java 敏捷开发 快速开发 .net core

《漫威复联》PC版游戏即将登陆,英特尔为其独家 CPU 合作伙伴

最新动态

艺术与科技的碰撞!Tristan Easton携手英特尔为漫威粉丝带来十代酷睿《复联》收藏版

最新动态

linux入门系列2--CentOs图形界面操作及目录结构

黑马腾云

Linux centos7 操作系统 系统运维

linux入门系列5--新手必会的linux命令

黑马腾云

Linux centos7 Shell linux命令 linux操作

高并发,你真的了解吗?

华为云开发者社区

负载均衡 软件 高并发 操作系统 服务器集群

为什么越来越多的非计算机领域企业,在自主做软件时都选择使用快速开发工具?

Philips

Java 敏捷开发 快速开发 .net core

为什么越来越多的非计算机领域企业,在自主做软件时都选择使用快速开发工具?

Learun

Java 敏捷开发 快速开发 .net core

Kotlin这么火!如何快速从Java过渡到Kotlin

华章IT

Java kotlin 协程 安卓

话题讨论 | 特斯拉和拼多多杠上了,你有什么看法?

InfoQ写作平台官方

写作平台 话题讨论

推荐一款可视化+NoteBook工具

数据社

大数据 可视化 Zeppelin notebook

C++ 互斥锁和条件变量的性能比较

小林coding

c c++ 编程 并发编程

Nginx配置80端口用于多个域名

石云升

nginx 域名配置 80端口共用

实战分享丨MySQL 与Django版本匹配相关经验

华为云开发者社区

MySQL 数据库 django 华为云

「分布式一致性协议」从2PC、3PC、Paxos到 ZAB

海星

lgloo Software 的 Jira Cloud 转型之旅

Atlassian

项目管理 DevOps 敏捷开发 Jira Cloud

十年磨一剑-BIGO全球音视频技术解决方案

InfoQ_3597a20b53cc

人工智能 大数据 技术

linux入门系列4--vi/vim编辑器

黑马腾云

vim Linux centos7 操作系统 VI

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