出于文档原因进行键解构是否是一种良好的风格?我之所以提问,是因为clj-kondo,Clojure的代码检查器,报告了未使用的绑定。例如
(let [x 1, y 2] y)
将会产生关于x
未使用的警告。
有时人们会这样做
(defn public-foo [{:keys [foo bar] :as x}]
(private-baz x))
仅仅是为了获得关于public-foo
的更好的文档字符串(或生成的文档)。但是他们会得到关于foo
和bar
未使用的警告。一个来自野外的例子:链接。
解构在性能方面并不是免费的,因此使用spec或:arglists
可能是获得这些文档好处更好的替代品。例如
user=>
(defn public-foo
{:arglists '([{:keys [foo bar] :as x}])}
[x]
;; (private-baz x)
)
#'user/public-foo
user=> (doc public-foo)
-------------------------
user/public-foo
([{:keys [foo bar], :as x}])
nil
在我在clj-kondo中添加对抑制由键解构引入的未使用绑定警告的配置支持之前,我想得到关于此问题的共识。