極簡化
極簡化(另稱縮小化),在程式語言 (尤其是 JavaScript) 的範疇裏,指的是在不影響功能的情況下,移除所有非功能性必要之原始碼字元(如:空白、換行、註解、以及些許的區塊辦識子),因為雖然它們有助於提昇原始碼的易讀性,但在實際運行時卻不是必要的部份。
極簡化後的原始碼特別對於在網絡上傳送的直譯式語言(例: Javascript)有所助益,因為經過極簡化之後,需要傳輸的資料減少了,大幅減少了傳輸所需的時間以及頻寬;極簡化後的原始碼也可以被當作一種代碼混淆的結果,使人不易閱讀或使用,但只需依靠原始碼美化器便可以把結構整理出來;極簡化和常見的數據壓縮也有所不同,因為極簡化的原始碼並不需要經過解壓縮的過程便可以閱讀或執行。
另外,極簡化同時也是一種程式設計師文化:例如在 Perl 的圈子裏,Perl Golf 活動的目標正是追求盡可能的極簡化。
範例
舉以下的 JavaScript 為例子
var array = [];
for (var i = 0; i < 20; i++) {
array[i] = i;
}
與下面極簡化後的原始碼等價
for(var a=[i=0];++i<20;a[i]=i);
歷史
2003年,Douglas Crockford 發表了 JSMin[1] 工具,這個版本只移除原始碼中的註解以及空白字元。推出不久後,就由 YUI Compressor 接着發展。
2009年,Google 公開了它們的 Closure Toolkit,當中包括 Closure Compiler[2],一個能產出原始碼對照表的簡化器,以及一個稱為 Closure Inspector[3] 的 Firefox 外掛。
2010年,Mihai Bazon 發表 UglifyJS[4];2012年發表重新改寫的 UglifyJS2,以便加入原始碼對照表支援。
原始碼對照表
原始碼對照表在原始碼和極簡化後的程式碼中建立所需的對應,如此一來在除錯工具中,極簡化後的原始碼看起來就像是原本的原始碼一樣。
這個對照表的格式,最早是由 Joseph Schorr 作為 Closure Inspector 極簡化計劃裏的一個部份定立的。後續的第二、三版,更進一步減小的對照表的檔案大小。
參考資料
- ^ JSMin. [2020-07-24]. (原始內容存檔於2021-03-06).
- ^ google/closure-compiler: A JavaScript checker and optimizer.. [2020-07-24]. (原始內容存檔於2021-03-27).
- ^ Google Code Archive - Long-term storage for Google Code Project Hosting.. [2020-07-24]. (原始內容存檔於2016-12-31).
- ^ uglify-js - npm. [2020-07-24]. (原始內容存檔於2017-08-22).