2013-01-16 63 views
15

顯然這是由開發人員決定何時棄用和何時刪除,但我想知道如何開發人員說,JavaScript函數已被棄用?JavaScript庫應該使用已棄用的註釋嗎?

大多數語言(Java,C#,Python)都支持某種形式的語言級別棄用。

對於Javascript,雖然我找不到任何標準的方式,開發人員可以指出一個功能已被棄用(在代碼中)。我能做的最好的是遵循(大量)發行說明。

舉個例子,grepping的jQuery 1.8的全部源代碼顯示最小行內註釋:

# curl http://code.jquery.com/jquery-1.8.0.js | grep -i depre 
// jQuery.support.boxModel DEPRECATED in 1.8 since we don't support Quirks Mode 
// *** attrChange attrName relatedNode srcElement are not normalized, non-W3C, deprecated, will be removed in 1.8 *** 
// Some plugins are using, but it's undocumented/deprecated and will be removed. 
// Deprecated 
// Limit scope pollution from any deprecated API 
// Deprecated, use jQuery.browser.webkit instead 

W3C和MDN似乎並不有一個標準的方式或提供關於如何處理這個建議。

我發現的最好的是JSDoc的@deprecated標籤。

有誰知道if javascript does是否有一個我忽視的棄用註釋?有更好或更常見的方法來做到這一點?

+3

'console.log('This function is deprecated。');' –

+0

@FlorianMargaine有趣的是,你可以創建它作爲答案嗎?你知道任何使用這種方法的圖書館嗎? – hafichuk

+0

是的,jQuery Migrate(用於1.8 - > 1.9的升級)就是這樣做的。 –

回答

7

基本上沒有的方式不贊成方法/函數。這取決於開發人員處理已棄用的成員。

我認爲唯一可以做的事情就是盡最大努力記錄棄用的函數/方法,並在源代碼文檔中使用@deprecated標記。

然後,一些編譯器(如果我沒有錯的話,Google Closure Compiler會這樣做)和高級IDE,可以使用這個標籤來驗證編譯後的源代碼,並在使用某些不推薦使用的函數時觸發警告。

9
console.log('This function is deprecated.'); 

這就是jQuery Migrate(用於1.8 - > 1.9升級)如何幫助人們升級他們的代碼。

從他們wiki

,允許開發者遷移舊的jQuery代碼時識別和解決兼容性問題,插件開發(未壓縮)版本產生每當它的任何功能被稱爲控制檯的警告消息。這些消息僅在控制檯上出現一次,用於每條唯一消息。

+0

這是一種非常有趣的方式來棄用功能並提供向後兼容性(如果我正確讀取它)。所以他們基本上把貶低當成一個插件。 – hafichuk

+0

這工作,我用它。但是,您需要小心Internet Explorer。我知道在IE8中,console.log('foo')'會在開發人員工具未打開時導致異常。請參閱https://stackoverflow.com/questions/690251/what-happened-to-console-log-in-ie8 – phylae

+0

可能會更好'console.warn('棄用')'也許? –

相關問題