在大型代码库和团队中,不同的人可能会用不同的别名 'require' 命名空间
h.clj
(ns hello.core)
f.clj
(ns foo.core
(:require [hello.core :as hc]))
b.clj
(ns bar.core
(:require [hello.core :as h]))
如果您看到,我参与的大项目中通常即使遵循了约定,同一个命名空间也会有不同的别名。这是人类错误,在大型团队中这种情况经常发生。这使得使用像 grep 等简单工具查找命名空间及其中的函数的使用变得更加困难(如上面例子中的 hc/some-func
或 h/some-func
)。
我想提出,在 ns 宏本身中添加类似的功能
(ns hello.core :default-alias <my-alias>)
和无论在哪里 require 这个 ns
(ns foo.core
(:require [hello.core :default-alias])
我们都会自动获得一个 <my-alias>
来引用命名空间,这样我们就可以这样做 <my-alias>/some-func
这将导致在语言级别强制执行的代码一致性
我认为这可以通过在命名空间中存储某种类型的元数据来实现