透明還是不透明,是個問題 —— 《你不知道的 JavaScript》書評

,發表於2017-10-10

很喜歡《你不知道的 JavaScript》系列。我想這套書真正做到了深入淺出。入得深,以 JS 規範為藍本,把原理剖析的一清二楚,本書並不適用於初學者,而是對JS開發有一定的經驗的人。出的淺,剖析完原理,評判完各種觀點、方法的優缺點,能夠給出自己的結論,收斂到切實可行的方法。

這是一套有個性的書。針對市面上一刀切式的批判 JS 缺陷的書籍,作者的觀點是,你丫不會用而已。對於 JS 的 “bad parts”,作者認為不應該唯恐避之而不及,在倒掉洗澡水的同時把孩子也給倒掉了;而是取其精華,去其糟粕。在武林高手手裡,再爛的招式,也可以化腐朽為神奇。

更有意思的是,作者沒有迴避網路上對於 JS 一些奇葩特性的吐槽,而是秉著該書一貫的原則,進行細緻的剖析,給出令人信服的解釋。這一貫的原則——同時也是作者對於程式設計的理念——就是你必須知道自己寫的程式是如何執行的。你不僅僅要知道程式為什麼不能執行,更要知道程式為什麼能夠執行,否則你寫的程式就是“紙牌屋程式”。

對於這一點我深以為然。我曾經在播客上聽過一期作者的談話節目。作者認為,從事程式開發工作,不僅僅要對工作中使用的工具掌握精通,還要對該工具的底層理解透徹。假如你從事 React 開發,那麼除了精通 React 之外,還要對 JS 語言本身有深入的理解。當然技術棧可以一直往下深挖,但是至少要對自己所使用工具的下一層能夠理解。

“透明”一詞相信廣大程式設計師都不陌生。高層抽象對底層細節進行封裝,只暴露出簡單、符合直覺的介面,這樣我們就可以說,底層程式細節對於呼叫高層介面的人來說,就是透明的(不可見的)。分層抽象和封裝在軟體工程領域是非常有用的方法論。很多程式設計師也只滿足於會使用高層介面進行程式開發,而對於底層細節一無所知。

如果你對於中學時老師的口頭禪“你不需要理解,記住這麼做就可以了”不以為然,對自己的程式為什麼能夠執行而懷有強烈的好奇心,希望能夠明白自己在幹什麼,那麼,這個系列的書籍就是為你而寫的。

相關閱讀:圖靈社群:翻譯 | 像 JavaScript 一樣思考

相關文章