gpt4 book ai didi

scala - 使用全局对象或参数来传递配置数据,Scala 中哪一个更好?

转载 作者:行者123 更新时间:2023-12-02 01:39:52 25 4
gpt4 key购买 nike

我是 Scala 新手,并且拥有多年的 Java 编程经验。

通常有两种模式传递一些配置:

  • 使用全局对象听起来像“ConfigManager”。而每次我需要一个我直接从中获取的配置。
  • 通过参数传递配置。配置参数可能存在于程序中有很多层。

我选择一种模式取决于我编写 Java 时如何使用配置。

但在 Scala 中,很多人谈论消除副作用。这让我想知道是否应该不惜一切代价使用第二种模式。

Scala 中哪种模式更好?

最佳答案

全局对象是坏的:https://softwareengineering.stackexchange.com/questions/148108/why-is-global-state-so-evil

使每个组件将其配置(单独的部分)作为构造函数参数(可能有一些默认值)。这可以防止创建无效组件或尚未配置的组件。

您可以在单个类中收集配置值的初始处理,以集中配置代码并在缺少内容时快速失败。但不要使您的组件(需要配置的类)依赖于全局对象或将整个配置作为参数。正是他们需要的构造函数参数。

示例:

// centralize the parsing of configuration
case class AppConfig (config: Config) {
val timeInterval = config.getInt("type_interval")
val someOtherSetting = config.getString("some_other_setting")
}

...
// don't depend on global objects
class SomeComponent (timeInterval: Int) {
...
}

object SomeApplication extends App {
val config = AppConfig(ConfigFactory.load())

val component = new SomeComponent(config.timeInterval)
}

关于scala - 使用全局对象或参数来传递配置数据,Scala 中哪一个更好?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40803275/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com