文中說明”用 if..else..
Li Henry
1

這邊描述的是一個軟體常見的問題,不只使針對 Bot。在評估程式碼複雜度的其中幾個指標,包括 function 的行數、變數的生命週期多久、branch (if, switch, 三元運算子等等) 的數量,都會因為單純的在 function block 去寫很多的 if..else 或 switch 而變差。試想有個 1000 行的 function 跟 100 個 10 行的 function,後者因為複雜度較小,又可以利用 function 命名去做封裝可以讓程式碼可讀性提升不少。測試性上如果寫了 4 層的巢狀 if (假如有狀態、多國語系等等問題要處理),直接一個 function 搞定的話會有 16 個 branch 要做單元測試,模組化的話能分別做測試。

這邊介紹的四個做法很難比個高下,有時候我們解決一些特定的問題,會想發明更高階的語言,或是用 DSL (Domain-Specific Languages) 來處理,這用可以有更高的抽象,這就是方法一。而方法二四剛好是物件導向以及函數編程的方式,這是 Programming Paradigm 的完全不同,要看團隊熟悉怎樣的方式,更習慣怎麼解決問題。方法三,Middleware 是所謂 Chain of Responsibility 模式,這倒是很適合在有多個程式碼都想要處理,但是排出個優先順序讓前面的人可以看情況中斷執行,例如:有需要登入認證、付款、或是其他的先決條件等等,都可以用這種方式 Short Circuit 跳出執行。

Show your support

Clapping shows how much you appreciated C.T. Lin’s story.