2017-07-26 121 views
0

正如我们所认识的人所说,命名变量是最复杂的软件工程问题之一......,似乎直到你面对它时才会意识到它。如何命名涉及双重复数的变量或参数?

下面是现实生活中的一个例子:添加一个CLI参数,允许用户指定作为测试执行一部分生成的文件的格式。

在大多数情况下,只有一个文件以单一格式生成,但是如果可以获取多个文件并且还可以使用命令分隔的值列表请求多个输出格式,如--controversial-param=junitxml,html

基础上走来走去的名字,我走过来的印象是赢家也将有一个是与此模式匹配:

--(output|report|result)[s]?-format[s]? 

我认为反对使用双复数,因为它们是语法不正确。

针对复数(一般)的第二个原因是它们会导致混淆:对于某人添加参数并忘记添加复数,通过代码复审并在合并后失败,太容易了。过去我多次看到这种错误,甚至发生在我做“错字”的时候,或者在审查过程中错过了。

所以我依靠别人SO社区提出并投票一个解决方案。让最好的论证赢得并使用推理而不是个人偏好。

+0

是否传递多个值意味着所有输出文件将在指定的_all_格式生成?如果是这样,在这种情况下,它比你想象的要简单:'--output-formats'完全没问题,“输出”这个词可以表示任意数量的东西,从无到有到多个文件,“格式”也可以包括零或单一格式。 还有其他的情况下,真正需要双倍复数,不可能使用撇号可以让你头痛。 – gbr

+0

@gbr请做出答案! – sorin

+0

这里你是...。 – gbr

回答

0

根据受欢迎程度(谷歌的搜索结果),并与其他工具以往的经验,我建议

--output-format 

没有复数可言,但将访问命令分隔列表,使用--help当这个被记录在案。

0

如果传递多个值到您的参数意味着所有输出文件中指定的所有格式生成,在这种情况下,它更简单比你想象:

--output-formats是完全正常的,单词“输出 “可以表示任何数量的东西,从无到有到多个文件,并且”“格式”可以包括零或单个格式。

还有其他一些情况下,当真的需要双复数,而不能使用单引号可以给你头痛