【发布时间】:2010-07-23 06:43:16
【问题描述】:
我正在编写一个 Clojure 库,我想知道设置库配置参数的最佳实践是什么。
许多库(例如 clojure-contrib 中的库)使用全局级别参数,例如 *buffer-size*,用户可以通过在它们上调用 set! 来设置这些参数。但这对我来说似乎不是最好的方法,因为它会创建一个全局状态并且有可能发生名称冲突。
另一种方法是在依赖于它们的每个函数调用中传递参数。如果有很多参数,则可以使用它们的映射而不是传递单个参数。
例如,假设我正在编写一个缓存库。
使用第一种方法,我有*cache-size*, *expiry-time*, *cache-dir* 等全局参数。用户set!s 这些(或不让它们成为默认值)并调用(set-in-cache id obj) 和(get-from-cache id) 等函数。
使用第二种方法,用户首先创建一个参数映射并将其传递给每个调用
(def cache-parameters {:cache-size 1000
:expiry-time: 1440
:cache-dir "c:\\cache"})
(set-in-cache cache-parameters id obj)
(get-from-cache cache-parameters id)
那么在 Clojure 中哪种方式是首选方式,为什么?
【问题讨论】:
标签: parameters clojure