为了文档原因而进行键解构是良好风格吗?我之所以问这个问题是因为 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
未使用的警告。来自野外的例子: 链接。
解构在性能方面不是免费的,所以使用 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 的配置中添加抑制由键解构引起的函数参数中未使用绑定产生的警告之前,我希望就此事达成共识。