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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章