为了文档化的原因进行键解构是良好的风格吗?我提问的原因是 clj-kondo(Clojure 的一个 linter)报告了未使用的绑定。例如
(let [x 1, y 2] y)
这导致了一个关于 x
未使用的警告。
有时人们这样做
(defn public-foo [{:keys [foo bar] :as x}]
(private-baz x))
只是为了获得更好文档(或生成文档)的 public-foo
。但他们将会收到关于 foo
和 bar
未使用的警告。一个 wild 的例子:。
解构在性能方面并不是免费的,因此使用 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 开发任何配置支持以抑制函数参数中键解构引入的未使用绑定的警告之前,想先听一下大家的意见。