2009-11-22 118 views

回答

21

這是一個代碼所產生的行爲,它可能通過消耗代碼而被依賴,儘管這種行爲並沒有通過代碼被寫入的規範來指定。因此,同一規範的其他實現可能不會表現出相同的行爲,並會中斷該消費代碼。這就是爲什麼依靠它們不好。例如,如果要針對指定數組排序但不使用其算法的列表接口編寫一些代碼,並且您需要排序方法爲stable,並且您的代碼版本與非穩定的排序算法,那麼你的代碼就會中斷。

8

一個「實現細節」是留給由開發者做出的決定,並且在較早的級中未指定(諸如需求文檔,或根據上下文,架構文檔。)

+3

這就是我的想法 - 只在實現級別定義的東西,而不是在設計/規劃階段。 – dotnetdev 2009-11-22 03:42:27

16

我不知道術語「實現細節」的確切形式定義,它通常是指某個規範的具體實現。

List爲例。

List的規範可能會說「它能夠在保留順序的同時保存多個值並且具有重複值」。

從上面,它沒有提及List使用什麼樣的後備數據結構 - 我們知道,它可能是一個數組或鏈表。這實際上是實現細節,這實際上由List的實現者決定。