2024 Clojure 状态调查! 分享您的想法。

欢迎!有关如何使用本网站的信息,请参阅 关于 页面。

+10
Clojure
编辑

对此有任何“官方”的指导吗?

Clojure.spec 都使用

(s/def ::foo (s/keys :req [::bar]))

我现在疑惑的用例是我正在开发的一个内部 API。很明显,API 响应中的顶级键受益于使用限定。那么值位置的关键字呢?

{:my.api.person/name "Imre"
 :my.api/result-type :success ;; :my.api.result/success perhaps?
 :my.api/warnings [:quota-exceeded :my.api.quota/exceeded]}

编辑: Slack 讨论中,我首先提出了这个问题

1 个答案

+3

选择
 
最佳答案

有关这方面的 spec 指导,最好在 https://clojure.org/about/spec#_global_namespaced_names_are_more_important 中找到 - spec 强烈推荐在数据可能与其他人共享,或者与其他库或来源的数据组合时,使用限定的属性 spec 名称作为 map 键。

然而,这并非唯一担忧——我们同样关注可读性、可写性等。在某些情况下,一个属性(或值)可能仅在特定上下文中存在,因此不需要进行限定,可以从容器中推断出来。在上面的示例中,我不确定限定该值有多大价值——它可能只在其属性上下文中被设置/比较,而该属性已被限定。

...