【发布时间】:2008-12-22 06:57:32
【问题描述】:
背景
在我正在编写的 C# 命令行应用程序中,一些参数的可能值有“yes”和“no”。
我使用如下所示的 Enum 类型存储他们的输入。
enum YesNo
{
Yes,
No
}
这很好 - 代码有效。那里没问题。
注意:是的,我可以将这些存储为 bool(这就是它过去的工作方式)。我的设计选择是明确用户所做的是/否选择,因为他们会在其他上下文中看到这个打印,我希望它更明显的选择是什么。
我的问题
- 有一个名为“YesNo”的枚举似乎很奇怪 - 有什么建议可以更好地为“yes”和“no”值的枚举命名。
所以最后
我在 StackOverflow 的早期就问过这个问题。这不是假问题——我确实遇到过这种情况。我只是觉得用它看看社区会做什么会很好。因为它是,我承认一个有点奇怪的问题。
首先,感谢所有花时间回复的人。我正试图以深思熟虑的结论来回报这一点。
对答案的评论
切换到 bool。我理解你的动机,但我觉得我需要指出,有一个 二元 选择(我的意思是在任何两个值之间进行选择 - 活着/死去、已婚/未婚等)是不一样 boolean 选择真假。我们发现程序员在是/否和真/假之间切换很容易——这很公平。如果我在这种情况下的选择是“Democrat”或“Replication””(我知道这是人为的例子),那么你会看到混淆或至少尴尬的可能性。我确实认为 bool 选项在这种情况下是有效的,但更少所以在其他二元选择中。
本地化 - 很好。在我的具体情况下,这并不重要 - 这不是而且永远不会被本地化,但对于其他情况,这是需要考虑的。
多于三个选项 - 事实上,后来我不得不添加第三个值来表示用户的有效(在我的应用程序中)条件,特别是 not做出选择。
有很多好的cmets,谢谢大家!
【问题讨论】:
-
嗯,也许以后会添加“IDontKnow”?哈哈
-
其实其他参数也可能出现类似情况。示例:是、否、自动是、否、继承
-
这引出了一个问题:对于包含 {Yes,No,Auto} 或 {Yes,No,Inherit} 等的枚举,什么会是个好名字。我实际上使用过前者,发现自己没有更好的替代名称 YesNoAuto,但我讨厌它,每次我不得不使用它时都觉得有点笨。
-
P.S.我使用了 Auto = -1、No = 0 和 Yes = 1。所以也许我应该将其命名为 AutoNoYes。 :)
-
请不要对自己这样做。坚持使用布尔
标签: c# coding-style naming-conventions naming