clojure - 从文件中重构 Clojure 函数

标签 clojure namespaces refactoring

鉴于每个 Clojure 命名空间都对应一个文件,难道公共(public)函数、宏等永远不能在不破坏向后兼容性的情况下从该文件中移出吗?

这似乎是一个令人惊讶的僵化系统——本质上,面向公众的代码的重构只能在单个文件中完成。

这种限制是否有技术原因?也许与 Java 互操作有关?

最佳答案

您可以将单个命名空间拆分为多个文件(请参阅 Splitting a Clojure namespace over multiple files ),但这种情况很少见。您也可以使用 https://github.com/ztellman/potemkin 导入变量但在实践中很少这样做。 Clojure 库往往具有相对较小的公共(public)接口(interface),这可能是因为它们通常对公共(public)数据结构进行操作。因此,很少有包含大量代码的文件。

如果您想保持向后兼容性,您可以 def将 var 放入命名空间(或什至在具有不同名称的命名空间中),以确保任何调用者仍将解析为正确的函数。

关于clojure - 从文件中重构 Clojure 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37914032/

相关文章:

refactoring - 您如何维护劣质代码库?

java - 如何打破多个 foreach 循环?

java - 如何在 Java 中迭代 Clojure ISeq?

python - Python 中更好的函数组合

python - 实例化时如何引用传递给我的类的对象?

XML 命名空间,为什么前缀需要它们?

algorithm - 数字的分解优化

Clojure 中的宏、评估和引用

clojure - 求和函数不起作用 :/

ruby-on-rails - Rails - 如何在 View 中引用命名空间表属性