命令行参数还是配置文件?

30
我正在开发一个工具,用于执行多种类型的分析,每个分析都可以有不同程度的彻底性。在启动前需要提供相当数量的选项。由于指定的分析类型较少,所以我开始使用配置文件实现。随着实现的选项数量增加,我创建了更多的配置文件。然后,我开始混合一些命令行参数,因为有些选项只能是标志。现在,我混合了大量的命令行参数和配置文件,并感觉需要进行重构。
我的问题是,什么时候和为什么会使用命令行参数而不是配置文件,反之亦然?
这也许与您使用的语言、个人偏好等有关吗?
注:我正在开发一个在Windows和Mac上工作的Java应用程序,目前没有GUI界面。
5个回答

12

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


7

命令行参数:

优点:

  1. 简洁 - 不需要额外的配置文件
  2. 与bash脚本有很好的交互性 - 例如变量替换、变量引用、bash数学等

缺点:

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

配置文件:

优点:

  1. 它可以非常大,大小可以根据需要调整
  2. 格式更加灵活 - 您可以使用JSON、YAML、INI或任何其他结构格式来以更易于理解的方式表示信息

缺点:

  1. 无法与bash变量替换和引用(以及bash数学)进行交互 - 如果您希望配置文件是“通用”的并且可重复使用,则必须定义自己的替换规则,而这是使用命令行参数的最大优势 - 在配置文件中进行变量数学运算将非常困难(如果不是不可能的) - 您必须在配置文件中定义自己的“运算符”,或者您必须依赖于另一个bash脚本来执行变量数学运算,并执行您的自定义变量替换,以使“通用”配置文件可以变为“具体可用”的。
  2. 要准备一个具有自定义定义的变量替换规则的通用配置文件,仍然需要一个bash脚本来执行实际替换,并且您仍然必须编写您的命令行以接受所有变量替换,因此,您可以拥有没有变量替换的配置文件,这意味着您“硬编码”并重复配置文件以适应不同的情况,或者使用自定义变量替换规则的替换逻辑会使您的应用程序配置文件逻辑更加复杂。

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


4

我的意见是:两个都可以,使用 mysqld.exe。


2
在什么环境/平台下?在Windows中,您最好使用配置文件,甚至可以在GUI中使用配置面板/窗口。

我正在开发一个可以在 Windows 和 Mac 上运行的 Java 应用程序。目前我没有 GUI。 - Carlos Blanco

0

我将不经常更改的配置放在配置文件中。 经常更改的配置我会放在命令行中。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接