極簡化(另稱縮小化),在程式語言 (尤其是 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 極簡化計畫裡的一個部份定立的。後續的第二、三版,更進一步減小的對照表的檔案大小。

參考資料

  1. ^ JSMin. [2020-07-24]. (原始內容存檔於2021-03-06). 
  2. ^ google/closure-compiler: A JavaScript checker and optimizer.. [2020-07-24]. (原始內容存檔於2021-03-27). 
  3. ^ Google Code Archive - Long-term storage for Google Code Project Hosting.. [2020-07-24]. (原始內容存檔於2016-12-31). 
  4. ^ uglify-js - npm. [2020-07-24]. (原始內容存檔於2017-08-22). 

參見

外部連結