Большинство приложений, которые мы пишем разработчикам, должны быть внешне параметризованы при запуске. Мы передаем пути к файлам, имена каналов, адреса TCP / IP и т. Д. До сих пор я использовал командную строку , чтобы передать их запущенному приложению. Мне пришлось проанализировать командную строку в main
и направить аргументы туда, где они нужны, что, конечно, хороший дизайн , но трудно поддерживать для большого количество аргументов. Недавно я решил использовать механизм переменных среды . Они глобальны и доступны из любого места, что менее элегантно с архитектурной точки зрения, но ограничивает объем кода .
Это мои первые (и, возможно, довольно поверхностные) впечатления от обеих стратегий, но я хотел бы услышать мнения более опытных разработчиков - Каковы преимущества и недостатки использования переменных среды и аргументов командной строки для передачи аргументы процесса? Я бы хотел принять во внимание следующие вопросы:
- качество дизайна (гибкость / ремонтопригодность),
- ограничения памяти,
- переносимость решения.
Примечания:
Ad. 1. Это главный аспект, который меня интересует.
Ad. 2. Это немного прагматично. Я знаю о некоторых ограничениях для Windows, которые в настоящее время огромны (более 32 КБ как для командной строки, так и для блока среды). Я думаю, что это не проблема, так как вам просто нужно использовать файл для передачи тонны аргументов, если вам нужно.
Ad. 3. Я почти ничего не знаю о Unix, поэтому я не уверен, что обе эти стратегии можно использовать так же, как в Windows. Уточните это, если хотите.