作为布尔值传递的2值变量的变量名?

问题描述:

你是什么命名一个布尔变量,但可以有N个有意义的值?作为布尔值传递的2值变量的变量名?

示例:x的值可以是“红色”或“蓝色”。

调用bRed或isRed是有意义的,如果他的值是真的,但没有传达关于“false”情况的任何信息。

YOu 可能实现它作为一个整数,或者如果你挑剔,作为一个枚举。但是,这意味着代码申报枚举更多线等

我想“redOrBlue”的,但在逻辑上来讲,值始终为true :)

你觉得“redNotBlue”的是什么?任何更好的想法?

+0

我尝试使用枚举,但它增加了更多的代码。情况是2个单选按钮中的1个。通常我只是将radiobutton1.Checked的值作为参数传递。使用枚举意味着我必须遍历groupbox的控件,找到选中的单选按钮,将它映射为枚举值,然后用switch语句处理函数端的枚举。 – 2011-03-19 18:24:29

+0

难道你不能只说'radiobutton1.Checked? ColorEnum.Red:ColorEnum.Blue'?另一方面,'if(color == ColorEnum.Red)'? – Aaron 2011-03-19 21:02:03

您应该在这种情况下使用枚举。

enum EntityColors 
{ 
    blue, 
    red 
}; 
+0

打败我吧;-) 我同意,我认为在这个特例中,枚举是合适的,因为没有意义表达'真'或'假'的意思。 – Pandincus 2011-03-19 17:40:56

+0

我已经考虑到了这一点,但它意味着更多的代码行不是更安全或清晰的。但我会重新考虑。 – 2011-03-19 17:43:45

+1

@Larry,稍后你也想一想你想添加另一种颜色。你的变量是否被命名为'RedNotBlueNotYellow'?或者如果IsRed是假的,这是否意味着它是蓝色或黄色?使用枚举很容易维护和阅读。 – 2011-03-19 17:49:26

在这种情况下,只需使用一个enum,这是最传神:代码

public enum ColorValue { Red, Blue }; 
+0

已经考虑到了这一点,但它意味着更多的代码行不再是任何类型安全或清晰的代码。但我会重新考虑。 – 2011-03-19 17:43:08

+0

@Larry:它当然更多*可读*虽然 - 你将确切地知道你在处理代码中看到的是什么,对于布尔值也不能这么说。另外,您可以更容易地扩展数值集。 – BrokenGlass 2011-03-19 17:44:41

+0

我认为枚举更加清晰。如果有一个布尔变量在“最具表现力”的名称“falseMeansATrueMeansB”中声明,那么您会如何继承某些代码? – bottlenecked 2011-03-19 17:48:56

更多线没有伤害开发者呢。一个糟糕的类型和命名变量确实。去使用一个枚举类型,只在有意义的地方使用布尔值 - 即是/否,真/假逻辑。

也许你想解决其他问题。

例如你有一个打印功能

void print(string text, bool red) {...} 

红色是很重要的entrys其他都是蓝色的。为什么不改变变量名更有意义

void print(string text, bool isImportant) {...} 

这将使API更加清晰,一旦你改变你的重要颜色,说橙色你没有改变你的变量名称。

这当然应该被定义为一个枚举。

你的问题是“你的名字一个变量,它是一个布尔值,但可以有2个有意义的值出来N实例中:X可以有值‘红色’或‘蓝色’

一个布尔值可以有。两个值,“true”或“false”,在你的例子中,两个可能的值是“红色”或“蓝色”,所以这个dos看起来不像布尔变量的好候选。是更多的代码行,但可能更具可扩展性和更易维护性,因为它的意图对于将来的开发人员来说会消耗您的代码,因此值得(小)实施成本。