出于文档原因进行键解构是良好的风格吗?我之所以提问,是因为 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
未使用的警告。以下是一个例子: 链接。
在性能方面,解构并非无偿(rel="nofollow" href="https://github.com/candid82/joker/issues/240#issuecomment-509026070" target="_blank"),因此使用 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 添加抑制函数参数中键解构产生的未使用绑定警告的配置支持之前,我希望有一些共识。