关于文档说明,针对键的解构是否是良好实践?我之所以问这个问题,是因为 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 实现抑制函数参数中由键的解构引入的未使用绑定的警告功能之前,我希望对此达成共识。