【问题标题】:Command line parameters or configuration file?命令行参数还是配置文件?
【发布时间】:2010-02-23 23:41:54
【问题描述】:

我正在开发一种工具,可以执行多种类型的分析,并且每种分析都可以有不同程度的彻底性。该应用程序在启动之前将提供相当多的选项。我开始使用配置文件来实现这一点,因为指定的分析类型数量很少。随着实现的选项数量的增加,我创建了更多的配置文件。然后,我开始混合一些命令行参数,因为一些选项只能是标志。现在,我将一堆命令行参数与配置文件混合在一起,感觉需要重构。

我的问题是,您何时以及为什么要使用命令行参数而不是配置文件,反之亦然?

是否可能与您使用的语言、个人喜好等有关?

编辑:我正在开发一个可以在 Windows 和 Mac 上运行的 Java 应用程序。我暂时没有 GUI。

【问题讨论】:

    标签: configuration command-line parameters


    【解决方案1】:

    命令行参数对于快速覆盖配置文件中的某些参数设置很有用。同样,如果参数不多,命令行参数也很有用。对于您的情况,我建议您将参数预设导出到命令行。

    【讨论】:

      【解决方案2】:

      命令行参数:

      优点:

      1. 简洁 - 无需自行维护额外的配置文件
      2. 与 bash 脚本的良好交互 - 例如变量替换、变量引用、bash 数学等。

      缺点:

      1. 随着选项变得越来越复杂,它可能会变得很长
      2. 格式不灵活 - 除了一些帮助您解析高级开关等的命令行实用程序外,任何更复杂的(例如嵌套结构化信息)都需要自定义语法,例如使用正则表达式,并且结构可能非常严格 - 而 JSON或者 YAML 很难在命令行级别指定

      配置文件:

      优点:

      1. 它可以非常大,随您的需要而定
      2. 格式更灵活 - 您可以使用 JSON、YAML、INI 或任何其他结构格式以更人性化的方式表示信息

      缺点:

      1. 不灵活地与 bash 变量替换和引用(以及 bash 数学)交互 - 如果您希望配置文件“通用”和可重用,您可能必须定义自己的替换规则,而这是最大的优势使用命令行参数——变量数学在配置文件中会很困难(如果不是不可能的话)——你必须在配置文件中定义你自己的“操作符”,或者你必须依赖另一个 bash 脚本来执行变量数学,并且执行您的自定义变量替换,以便“通用”配置文件可以变得“具体可用”。
      2. 尽管准备好通用配置文件(具有自定义变量替换规则)所需的一切,但仍需要一个 bash 脚本来执行实际替换,并且您仍然必须编写命令行代码以接受所有变量替换,所以要么你有没有变量替换的配置文件,这意味着你“硬编码”并为不同的场景重复配置文件,或者具有自定义变量替换规则的替换逻辑使你的应用内配置文件逻辑更加复杂.

      在我的用例中,我认为能够在 bash 脚本中进行变量替换/引用(以及 bash 数学)更重要,因为我使用相同的二进制文件来启动许多具有不同职责的服务器节点服务器后端集群,我将 bash 脚本用作某种容器,或者实际上是一个配置文件,以使用不同的命令行参数启动许多不同的节点。

      【讨论】:

        【解决方案3】:

        我的投票 = 都 ala mysqld.exe

        【讨论】:

          【解决方案4】:

          什么环境/平台?在 Windows 中,您宁愿使用配置文件,甚至是 gui 中的配置面板/窗口。

          【讨论】:

          • 我正在开发一个可以在 Windows 和 Mac 上运行的 Java 应用程序。我暂时没有 GUI。
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-02-26
          • 1970-01-01
          • 2014-12-25
          • 1970-01-01
          • 2011-06-12
          • 1970-01-01
          相关资源
          最近更新 更多