《老子》有云「不善人者善人之資」。了解不適當與錯誤的方式,也是學習中重要的一環。在程式設計的領域中亦如是,好的設計方式會 patternalization ,壞的設計方式也會。Jack D Herrington 于 Ajax and XML: Five Ajax anti-patterns 列舉了 5 種常見的 Ajax anti-patterns 。這5種確實常見,我個人也有不少經驗可與之聯繫。
《老子》有云「不善人者善人之資」。了解不適當與錯誤的方式,也是學習中重要的一環。在程式設計的領域中亦如是,好的設計方式會 patternalization ,壞的設計方式也會。Jack D Herrington 于 Ajax and XML: Five Ajax anti-patterns 列舉了 5 種常見的 Ajax anti-patterns 。這5種確實常見,我個人也有不少經驗可與之聯繫。
Polling on a timer when you don't need to
當你不需要定時輸詢時卻這麼做。我的經驗:
Yahoo YU Library 並不使用 event notice 策略,而是使用 timer 輪詢。這種策略的效能表現並不好,類似用 while 輪詢。有時當我在 FireFox 上運行第二版下載工具下載大量影像並設定同時工作數大於 10 時, FireFox 會出現嚴重的行程鎖死現象。
Not inspecting the return results in the callback
不檢查 callback 回傳之狀態。在非同步模式下,我們必須常常提醒自己,天地不是以我為中心運轉,我要的資源不會總是剛好等著我取用。我的經驗:
Passing complex XML when HTML would be better
需要 HTML 時卻傳遞一個複合的 XML 。我的經驗: 基本的事物反而常常被忽略,不要忘了 HTML/XHTML 與 XML 一樣是一份基於標籤語言的結構化文件,而 HTML 的好處在於瀏覽器可以直接呈現視覺效果。
Passing XML when you should pass JavaScript code
可以傳遞 JavaScript 程式碼時卻傳遞 XML。我的經驗:
透過 XML 在網路間交換資料,真的很方便。只是 XML 有時候用起來有點小題大作的感覺。有時為了傳送很少的資料,卻要用上十幾倍於實際交換資料的記憶體空間。
為了讓使用者能建立純 JavaScript 應用, Google 就提供了將 GData 資料內容改用 JSON 格式包裹在 JavaScript 程式碼中的服務方式。
Doing too much on the server
讓伺服端做太多事。我的經驗:
只是我很懶,不想為了視覺效果去修改統計程式,更不想為了更新排序結果而要伺服端再回傳一次頁面。於是我打算以動態網頁的方式,直接用 JavaScript 對網頁上的統計表格排序。