我对Clojure还不熟悉,并试图掌握如何组织项目的名称空间。我正在研究背包问题的求解器。目前,我已经将模块分解为文件,但是一切都存在于一个名称空间中:my-project-name.core。我正在使用load来管理跨文件的访问,这似乎有点杂乱无章。我画了一张关于我想让各个部分接口的图表:

我的目标是能够独立地处理图中的每个节点。我正试图为rational命名空间设计提出一种策略,它介于一种和每一种名称空间之间。
特别是,我希望能够交换求解器和估计组件,因为它们是最可调的。
发布于 2015-03-25 23:30:29
bbatsov/clojure风格指南就如何使用命名空间提出了一些好的规则:
ns窗体,用于表示命名空间依赖项。。您几乎不需要在常规代码中使用load。:require :as而不是:refer或:use。这使得查看您从哪个命名空间中使用的内容变得更容易,您的代码最终也更容易理解。至于交换组件,这通常比使用名称空间更好地使用协议或多方法。
https://softwareengineering.stackexchange.com/questions/277395
复制相似问题