因此,我对Clojure.Spec的研究越来越深入。
我偶然发现的一件事是,把我的规格放在哪里。我看到三个选项:
全球规格文件
在大多数示例中,我在网上发现,spec.clj
主命名空间中需要一个大文件。它具有所有“数据类型”(s/def)
和(s/fdef)
功能。
临:
- 一个文件来统治他们
反对:
- 这个文件可能很大
- 违反单一责任原则?
生产命名空间中的规范
你可以把你的(s/def)
and放在你(s/fdef)
的生产代码旁边。因此,实现和规范共存于同一个命名空间中。
临:
- 实施和规范的协同定位
- 一个命名空间 - 一个问题?
反对:
- 生产代码可能会变得混乱
- 一个命名空间 - 两个问题?
专用规范命名空间结构
然后我想,也许 Specs 是第三种代码(在生产和测试之后)。所以也许他们应该拥有自己的命名空间结构,如下所示:
├─ src
│ └─ package
│ ├─ a.clj
│ └─ b.clj
├─ test
│ └─ package
│ ├─ a_test.clj
│ └─ b_test.clj
└─ spec
└─ package
├─ a_spec.clj
└─ b_spec.clj
临:
- 规范的专用(但相关)命名空间
反对:
- 您必须获取并要求正确的命名空间
谁有使用其中一种方法的经验?
还有其他选择吗?
您如何看待不同的选择?