我们开发人员编写的大部分应用程序需要在启动时进行外部参数化。我们通过文件路径,管道名称,TCP/IP地址等。到目前为止,我一直在使用命令行将这些传递给正在启动的应用程序。我必须解析main
中的命令行,并将参数引导到需要的地方,这当然是好设计,但是很难为大量参数维护。最近我决定使用环境变量机制。它们是全球性的,并且从任何地方都可以访问,这从不太优雅从架构的角度来看,但是限制了代码量。参数传递策略 - 环境变量与命令行
这些是我对这两种策略的第一次(也可能是很浅的)印象,但我希望听到更有经验的开发人员的意见 - 使用环境变量和命令行参数传递参数的起伏是什么到一个过程?我想考虑到以下事项:
- 设计质量(柔韧性/可维护性),
- 存储器约束,
- 溶液可移植性。
备注:
广告。 1.这是我感兴趣的主要方面。
Ad。 2.这是有点实用的。我知道在Windows上有一些限制,这些限制目前是huge(对于命令行和环境块都超过32kB)。我想这不是一个问题,因为如果你需要的话,你应该使用一个文件来传递大量的参数。
Ad。 3.我对Unix几乎一无所知,所以我不确定这两种策略是否与Windows一样可用。如果你愿意,请详细说明。
你会提供更多细节,如参数的实际数量?如果有分组给他们,或者他们都是随机的?这是什么语言? Java,C++等...我要求详细程度的原因是,尽管用任何语言处理这个问题都可能是个问题,但可能有一个您不知道的语言实现特定解决方案。 –
只是提到* nix操作系统,他们没有像“全局环境变量”,并且每个env var在fork时间从父进程继承到子进程。所以,“全局”并不是一个用于env var over命令行的专业版,至少对于那些操作系统来说。 – shr
嗨,@ jamesDrinkard。我对一般方法感兴趣。如果您想从由32位解释器运行的Python脚本向使用C++编写的64位应用程序传递20个不同的带标签的字符串/整数/实数参数,您将使用哪种方法? –