Параметры командной строки или файл конфигурации? - PullRequest
12 голосов
/ 24 февраля 2010

Я разрабатываю инструмент, который будет выполнять несколько видов анализа, и каждый анализ может иметь разные уровни тщательности. Это приложение будет иметь достаточное количество опций до его запуска. Я начал реализовывать это с помощью файла конфигурации, так как количество типов анализа было мало. По мере роста количества реализованных опций я создал больше файлов конфигурации. Затем я начал смешивать некоторые параметры командной строки, поскольку некоторые параметры могли быть только флагами. Теперь я смешал кучу параметров командной строки с файлами конфигурации и чувствую, что мне нужен рефакторинг.

У меня вопрос: когда и почему вы используете параметры командной строки вместо файлов конфигурации и наоборот?

Возможно, это связано с языком, который вы используете, личными предпочтениями и т. Д.?

РЕДАКТИРОВАТЬ: я разрабатываю Java-приложение, которое будет работать в Windows и Mac. У меня пока нет графического интерфейса.

Ответы [ 4 ]

8 голосов
/ 24 февраля 2010

Параметры командной строки полезны для быстрого переопределения некоторых настроек параметров из файла конфигурации. Кроме того, параметры командной строки полезны, если параметров не так много. Для вашего случая я бы предложил экспортировать пресеты параметров в командную строку.

3 голосов
/ 24 февраля 2010

мой голос = оба ala mysqld.exe

2 голосов
/ 24 февраля 2010

Какая среда / платформа? В Windows вы предпочитаете использовать файл конфигурации или даже панель / окно конфигурации в графическом интерфейсе.

1 голос
/ 05 октября 2017

Аргументы командной строки:

Плюсы:

  1. лаконично - никаких дополнительных файлов конфигурации для самостоятельного обслуживания
  2. отличное взаимодействие со скриптами bash - например, подстановка переменных, ссылка на переменную, математика Bash и т. д.

Минусы:

  1. это может быть очень долго, так как опции становятся более сложными
  2. форматирование негибкое - помимо некоторых утилит командной строки, которые помогают анализировать высокоуровневые переключатели и т. Д., Для чего-либо более сложного (например, вложенная структурированная информация) требуется собственный синтаксис, такой как использование Regex, и структура может быть довольно жесткой - в то время как JSON или YAML будет сложно указать на уровне командной строки

Конфигурационные файлы:

Плюсы:

  1. оно может быть очень большим, настолько большим, насколько вам нужно, чтобы оно было
  2. форматирование более гибкое - вы можете использовать JSON, YAML, INI или любой другой структурный формат для представления информации в более удобной для человека форме

Минусы:

  1. негибко взаимодействовать с подстановками и ссылками на переменные bash (а также математикой bash) - вам, вероятно, нужно определить свои собственные правила подстановки, если вы хотите, чтобы файл конфигурации был «универсальным» и мог бы использоваться повторно, в то время как это самое большое преимущество используя аргументы командной строки - переменная математика будет сложной в конфигурационных файлах (если не невозможной) - вы должны определить свой собственный «оператор» в конфигурационных файлах, или вы должны полагаться на другой скрипт bash для выполнения переменной математика, и выполните подстановку пользовательских переменных, чтобы «общий» файл конфигурации мог стать «конкретно используемым».
  2. для всего того, что нужно, чтобы подготовить общий конфигурационный файл (с настраиваемыми правилами подстановки переменных), сценарий bash все еще необходим для выполнения фактической замены, и вам все равно придется кодировать свою командную строку, чтобы принять все подстановки переменных, так что либо у вас есть файлы конфигурации без подстановки переменных, что означает, что вы «жестко программируете» и повторяете файл конфигурации для разных сценариев, либо логика подстановки с пользовательскими правилами подстановки переменных делает вашу логику файла конфигурации в приложении намного более сложной .

В моем случае использования я ценю возможность подстановки / ссылки на переменную (а также bash math) в сценариях bash более важным, поскольку я использую один и тот же двоичный файл для запуска множества узлов сервера с разными обязанностями в серверный кластер, и я вроде использую сценарии bash как своего рода контейнер или фактически файл конфигурации, чтобы запустить множество различных узлов с разными аргументами командной строки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...