2017-07-26 38 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是完全正常的,單詞「輸出 「可以表示任何數量的東西,從無到有到多個文件,並且」「格式」可以包括零或單個格式。

還有其他一些情況下,當真的需要雙複數,而不能使用單引號可以給你頭痛