最近,我在我所工作的公司的一个项目中发现了一个错误。
基本上,发生的事情是在测试命名空间内部需要了两个不同的命名空间,我们可以叫它们first-ns和second-ns。
first-ns和second-ns都定义了具有相同名称的spec,比如这样
(ns first-ns)
(s/def :same/name
int?)
(ns second-ns)
(s/def :same/name
string?)
所以我的问题是,有没有一种方法可以使Clojure编译器对这种情况报出名称冲突的警告?在包含数百个spec的大型代码库中,这种情况偶尔会发生,并可能导致heisenbug。唯一的方法是不是将spec命名空间设置为与定义它们的文件的同一ns吗?