Стратегия передачи аргументов - переменные окружения против командной строки

Большинство приложений, которые мы пишем, должны быть параметризованы внешними параметрами при старте. Мы передаем пути к файлам, имена каналов, TCP/IP адреса и т.д. До сих пор я использовал командную строку для передачи их запускаемому приложению. Мне пришлось разобрать командную строку в main и направить аргументы туда, где они нужны, что, конечно, является хорошей конструкцией , но трудно поддерживать для большого количества аргументов. Недавно я решил использовать механизм переменных окружения . Они глобальны и доступны из любого места, что менее элегантно с архитектурной точки зрения, но ограничивает объем кода .

Это мои первые (и, возможно, довольно поверхностные) впечатления от обеих стратегий, но мне бы хотелось услышать мнения более опытных разработчиков -- Каковы взлеты и падения использования переменных окружения и аргументов командной строки для передачи аргументов в процесс? Хотелось бы принять во внимание следующие моменты:

  1. качество проектирования (гибкость/поддерживаемость),
  2. ограничения памяти,
  3. переносимость решения.

Remarks:

Ad. 1. Это основной аспект, который меня интересует.

Ad. 2. Это немного прагматично. Я знаю о некоторых ограничениях в Windows, которые в настоящее время огромны (более 32 кБ как для командной строки, так и для блока окружения). Я думаю, что это не проблема, так как вы просто должны использовать файл, чтобы передать тонны аргументов, если вам это нужно.

Объявление. 3. Я почти ничего не знаю о Unix, так что не уверен, что обе стратегии так же удобны в использовании, как и в Windows. Поработайте над этим, если хотите.

67
задан Janusz Lenar 16 September 2011 в 10:30
поделиться