iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 13
0
Software Development

模組化設計系列 第 13

Day13 - 模組的預設參數設計

  • 分享至 

  • xImage
  •  

前一篇我們有提到 koa-router 提供的建構子是可以帶值的,常見用途就是讓使用者可以彈性的覆蓋預設參數,這其實是非常常見的設計,你可以在很多模組都可以看到一樣的模式 (pattern)。

new Router([opts])

預設參數 (options)

  • throw:Boolean throw error instead of setting status and header
  • notImplemented:function throw the returned value in place of the default NotImplemented error
  • methodNotAllowed:function throw the returned value in place of the default MethodNotAllowed error

這樣的設計有好處?

這樣的設計好處是可以讓 API 使用起來很簡單,如果有 3 個參數的情況下,使用者不需要知道參數的順序,因為都包成一個物件了。如果參數很多的情況下,在模組內實作時,又可以維護一份預設參數物件,然後直接透過 Object.assign 語法,將兩個物件合併。

const inputOption = { a: 2 }
const defaultOption = { a: 1, b: 2, c: 3 }

const options = Object.assign(target, source)
// { a: 2, b: 2, c: 3 }

另一個好處是保留參數的擴充彈性,因為你無法預期模組未來會不會需要添加額外的參數。

壞的設計範例

new Router(throw, notImplemented, methodNotAllowed)

預設參數 (options)

  • throw:Boolean throw error instead of setting status and header
  • notImplemented:function throw the returned value in place of the default NotImplemented error
  • methodNotAllowed:function throw the returned value in place of the default MethodNotAllowed error

資料來源


上一篇
Day12 - 最簡單的起手式
下一篇
Day14 - 打照自己的模組注意事項
系列文
模組化設計30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言