Day05 間接層 (indirection)


  • 什麼是間接層 (indirection) ?
  • 間接層的實作

什麼是間接層?

間接層把「是什麼」與「如何實作」這兩件事分開來。當有人詢問『這個東西是怎麼運作的?』的時候,如果最好的答案是『視情況而定』,這就是間接層存在的最佳時機。當「實作」很複雜,或是很容易改變時,加入間接層就很有幫助。

indirections

間接層通常用兩種基本的方式來做:

  1. 參考 (references)
  2. 條件表達式 (conditionals)
參考 條件表達式 表格 (無序的條件)
功能 傳遞值 依照輸入值來做決定 依照輸入值來做決定
對於改變 開放 閉鎖 (除非改程式碼) 開放
範例 傳遞函數的參數 if/case/cond multimethod/protocol

條件表達式的本質是有序的條件 (order conditionals) ,所以它對於修改是閉鎖的,一定要改程式碼才有辦法改。如果想要做出容易修改的「條件」,就要把它改成無序的條件 (unorder conditionals) ,又可以稱之為表格

#indirection





Elements of Clojure 一書,談的不只是 Clojure ,而是 senior programmer 了解、卻不易對他人明說的隱性知識 (tacit knowledge)。

留言討論