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

问题描述 投票:0回答:6

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

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

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

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

configuration command-line parameters
6个回答
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
投票

我的投票= ala mysqld.exe


2
投票

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


0
投票

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


0
投票

使用经验法则,如果您有更多事情在程序执行过程中发生很大变化(例如一个名为

is_output
的变量,它为每次分析生成报告,然后每次都需要更新),那么这是一个很好的候选者对于偶数用户输入的参数,请使用参数。

提醒一下,在使用用户输入时,请确保对其进行验证,以免它们成为某种攻击的入口点。你永远不知道!

其余的最好存储在配置文件中,无论最适合您什么,如果您希望它可重用,请提出变量替换的语法,例如

{{ var }}
甚至
$$ var $$
或我个人用的那个
@@ var @@
.

© www.soinside.com 2019 - 2024. All rights reserved.