2013-08-01 40 views
15

我在書上讀到這句話:David Wheeler的格言中的「間接水平」是什麼意思?

有計算機科學沒問題,可以不使用間接的另一個層面來解決。

有人可以解釋嗎? 「間接水平」是什麼意思?

從我的理解,間接是使用價值的指針,而不是價值本身的花式名稱。請爲我澄清這一點。

+6

您忘了引用的其餘部分「...除了太多的indiretion級別」 –

+0

我認爲它與抽象層數據到對象有關,並處理各種抽象層次上的問題(在不同的對象中,也許在OOP範例中。) – Houdini

+0

[間接等級解決每個問題]的可能重複(http://stackoverflow.com/questions/288623/level-of-indirection-solves-every-problem)。另請參見[抽象層和間接層次之間的區別是什麼?](http://programmers.stackexchange.com/q/111756)和[其他網絡](http:// www。google.com/search?q=there+is+no+problem+that+cannot+be+solved+with+another+level+of+indirection)。 –

回答

20

「間接」使用的是其他最廣義的東西。

所以你的例子,使用一個值的指針而不是值,這個定義適合於一個層次。指針是一些東西,價值是別的東西。

通常,這是一些範圍較大:

  • 使用一個網站以圖形方式顯示由XML基於服務生成的數據。這裏的網站是一些東西,隱藏在它後面的是其他數據。
  • 使用操作系統訪問顯示屏幕。這裏有兩層,至少是間接的。操作系統使用屏幕驅動程序。一件事使用別的東西。然後,屏幕驅動程序直接與屏幕硬件通信,使其在這裏和那裏形成微小的光點。驅動程序是下一個使用硬件的東西。
  • 一個API在高層處理某些事情並不常見,並且API在較低層次上處理相同的事情。在低級別的API之上又增加了間接級別,我們稱之爲新的改進的API。

這最後一個例子可能解釋了「爲什麼」這一切。

當我們處理一些我們掌握的東西並學習如何將其抽象到一個更高的抽象層次時,因此需要一個新的間接層次,我們可以通過將一些工作卸載到新的API來更快地解決更大的問題。

+0

嘿那就是我說的!大聲笑,jk,很好的回答:) – Houdini

+0

很好的答案!謝謝 –

+0

當然,通過添加另一層間接尋址無法解決的一個問題是當你有太多的間接層。 –

3

間接性的一個潛在的巨大優勢是減少了耦合。這是另一種說法,應該適當地劃分事物。這通常對於長期的測試,可維護性和靈活性有很大的幫助。例如,如果您的應用程序需要讀取一些持久數據,而不是具體瞭解將應用程序分散到哪裏(以及如何讀取)的具體信息,請將其隔離(將讀取的數據放入方法),然後讓應用程序的所有其他部分調用該方法來獲取數據,而不是應用程序的每個部分都必須自己處理這些細節。