2011-12-20 52 views
3

有時,第三方庫在改變界面時會造成嚴重破壞。在某些語言中,它甚至發生在語言層面。是否有避免後向不兼容的方法,有時會強制執行?

是否有可能以防止它的方式編寫我們的代碼?例如,我可以想出一種方法 - 編寫自己的包裝函數。
通過這種方式,這些更改將被本地化爲一個功能。但是,這又會造成很大的開銷。

你有什麼想法嗎?

+1

這是一個有趣的哲學問題,但除了「經驗」和「運氣」之外沒有實際的答案。很多時候,計劃的推動是爲了防止這個問題的完全相反。 (我沒有投票結束,但是我懷疑這個帖子在我完成這個評論時會被關閉。)((補充:好的,我錯了 - 告訴你預測未來有多困難。)) – 2011-12-20 23:17:10

+0

I舉了一個實際想法的例子。我認爲可能會有更多。 – 2011-12-20 23:22:22

回答

2

蘋果向其開發者建議您的代碼可以檢查版本;那麼當版本更改時,您可以根據需要更新您的代碼。這裏有一個鏈接到他們的更深入的討論:

Mac OS X Developer Release Note

基本上,他們提供了可以在頭文件中用來表示最大的版本,其中的組分是指使用或已知能工作的標記。

+0

當然,針對iOS 4編寫的iPhone應用程序可能不到50%在iOS 5手機上運行。蘋果公司做出了多種非向上兼容/不兼容向下兼容的更改,甚至沒有允許兩者兼容的部分版本。所以蘋果的建議應該帶着一絲鹽。 – 2011-12-21 01:24:53

+1

無論蘋果是否遵循自己的建議,版本檢查仍然是向後兼容的另一個有效方法 - 並且您自己在此線程的自己的答案中支持。 – leanne 2011-12-21 17:16:58

+0

是的,但它很少做得很好,或者具有足夠的粒度。諾基亞做了一半體面的工作,他們的Symbian產品已基本停用。 – 2011-12-21 19:57:54

3

基本上,您包含某種版本機制(通常具有更多的粒度而不僅僅是低/高版本限制),並且嘗試將接口分開並「正交」。但很大程度上取決於您所在界面的哪一側。在「消費者」方面,你只能做很多事情。 IBM系統/ 38以及它的後代設法保持了兼容性,使得在第一版本上編譯的程序在30年後仍能運行而不需要重新編譯(並且通過對機器指令集的兩次修訂,第二次相當劇烈) 。但這是一個很不尋常的例子,雖然不是很完美的原創設計,加上相當強烈的動機(大型銀行在系統上花費了大量的美元)來保持兼容性。

在個人計算機級別,許多系統設計人員並不在乎,因爲不兼容性會銷售更多的軟件升級,從而銷售更多的硬件。

相關問題