出于文档原因,使用键解构是否是一种好的风格?我之所以提出这个问题,是因为 clj-kondo(Clojure 的 linter 工具)报告了未使用的绑定。例如:
(let [x 1, y 2] y)
结果出现了关于 x
未使用的警告。
有时人们这样做
(defn public-foo [{:keys [foo bar] :as x}]
(private-baz x))
只是为了获取 public-foo
的更好的 docstring(或生成的文档),但他们会收到关于 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 中添加支持以抑制函数参数中由键解构引入的未使用绑定的警告之前,我希望得到一些共识。