命令行参数或配置文件?

时间:2010-02-23 23:41:54

标签: configuration command-line parameters

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

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

它可能与您使用的语言,个人偏好等有关吗?

编辑:我正在开发一个适用于Windows和Mac的Java应用程序。我现在没有GUI。

4 个答案:

答案 0 :(得分:8)

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

答案 1 :(得分:3)

我的投票=两个ala mysqld.exe

答案 2 :(得分:2)

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

答案 3 :(得分:1)

命令行参数:

<强>优点:

  1. 简洁 - 没有额外的配置文件可以自行维护
  2. 与bash脚本的良好互动 - 例如变量替换,变量引用,bash数学等
  3. <强>缺点:

    1. 随着选项变得更加复杂,它可能会变得很长
    2. 格式化是不灵活的 - 除了一些帮助你解析高级别开关的命令行实用程序之外,更复杂的东西(例如嵌套的结构化信息)需要自定义语法,例如使用Regex,结构可能非常严格 - 而JSON或者在命令行级别很难指定YAML
    3. 配置文件:

      <强>优点:

      1. 它可能非常大,只要您需要它
      2. 格式化更灵活 - 您可以使用JSON,YAML,INI或任何其他结构格式以更人性化的方式表示信息
      3. <强>缺点:

        1. 不灵活地与bash变量替换和引用(以及bash数学)交互 - 如果你想要配置文件是&#34; generic&#34;你必须定义自己的替换规则。并且可重用,虽然这是使用命令行参数的最大优势 - 变量数学在配置文件中很难(如果不是不可能) - 你必须定义自己的&#34;运算符&#34;在配置文件中,或者您必须依赖另一个bash脚本来执行变量math,并执行自定义变量替换,以便&#34; generic&#34;配置文件可能变得具体可用&#34;。
        2. 为了准备一个通用配置文件(使用自定义变量替换规则)所需的一切,仍然需要一个bash脚本来执行实际的替换,你仍然需要编写命令行来接受所有的变量替换,所以要么你有没有变量替换的配置文件,这意味着你&#34;硬代码&#34;并针对不同的场景重复配置文件,或者使用自定义变量替换规则的替换逻辑使您的应用内配置文件逻辑更加复杂。
        3. 在我的用例中,我更重视能够在bash脚本中执行变量替换/引用(以及bash数学)更重要,因为我使用相同的二进制文件来启动具有不同职责的许多服务器节点在服务器后端集群中,我使用bash脚本作为一个容器或实际上是一个配置文件来启动具有不同命令行参数的许多不同节点。