鉴于每个 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/