所以,我越来越深入Clojure.Spec 。 我偶然发现的一件事是, 在哪里放置我的规格 。 我看到三个选项: 全球规格文件 在大多数例子中,我在网上发现,有一个大的spec.clj文件,在主命名空间中需要。 它具有所有“数据types”和函数的所有(s/def)和(s/fdef) 。 优点: 一个文件来统治他们 魂斗罗: 这个文件可能很大 单一责任原则受到侵犯? 规范在生产命名空间 你可以把你的(s/def)和(s/fdef)放在生产代码的旁边。 因此,实现和spec在同一个命名空间中共存。 优点: 实施和规格的共同定位 一个命名空间 – 一个关注? 魂斗罗: 生产代码可能会变得混乱 一个命名空间 – 两个问题? 专用spec命名空间结构 然后我想,也许Specs是第三种代码(旁边的生产和testing)。 所以也许他们应该拥有自己的名字空间结构,就像这样: ├─ src │ └─ package │ ├─ a.clj │ └─ b.clj ├─ test │ └─ package │ ├─ a_test.clj │ └─ b_test.clj └─ spec […]