【问题标题】:Is there an idiomatic way handle state in clojure?在clojure中是否有一种惯用的方式处理状态?
【发布时间】:2017-03-19 05:25:29
【问题描述】:

我正在编写几个端点来管理一个调度程序,为此我使用quartzite

我想让调度程序实例在 schedule、reschedule 和 unschedule 函数中可见,最简单的方法是创建一个 atom,但我想这不是防止代码异味的最佳方法。

我想知道是否有一种惯用的方式来处理 clojure 中的状态?

【问题讨论】:

    标签: clojure global state


    【解决方案1】:

    一种常见的方法是使用像ComponentIntegrant 这样的库来管理状态的生命周期和依赖注入。

    在这些情况下,您往往会得到一个包含相互关联状态系统的单个原子。

    根据我的个人经验,我使用 Quartzite 和组件 - 我有一个调度程序组件,可用于启动/停止/调度等。

    这些天我更喜欢 Integrant,并将慢慢将我的项目从 Component 转移。

    【讨论】:

      【解决方案2】:

      我相信,在您的代码中包含一个原子确实可以,但在其中存储尽可能少的数据,只存储那些真正需要更改的数据。

      你无法完全避免拥有状态,而原子非常适合。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-02-26
        • 2012-08-29
        • 2015-02-28
        • 2021-05-07
        相关资源
        最近更新 更多