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

C# 作为布尔值传递的2值变量的变量名?,c#,.net,variables,boolean,C#,.net,Variables,Boolean,如果一个变量是布尔型的,但可以有N个值中的2个值,那么该变量的名称是什么 示例:x的值可以是“红色”或“蓝色” 如果他的价值是真的,那么称之为“繁殖”或“isRed”是有意义的,但不会传达任何关于“虚假”案例的信息 您可以将其实现为int,或者如果您很挑剔,可以将其实现为enum。但是这意味着需要更多的代码来声明枚举,等等 我想到了“redOrBlue”,但从逻辑上讲,该值始终为真:) 你觉得“红蓝”怎么样?有更好的主意吗?在这种情况下,您可能应该使用枚举 enum EntityColors {

如果一个变量是布尔型的,但可以有N个值中的2个值,那么该变量的名称是什么

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

如果他的价值是真的,那么称之为“繁殖”或“isRed”是有意义的,但不会传达任何关于“虚假”案例的信息

您可以将其实现为int,或者如果您很挑剔,可以将其实现为enum。但是这意味着需要更多的代码来声明枚举,等等

我想到了“redOrBlue”,但从逻辑上讲,该值始终为真:)


你觉得“红蓝”怎么样?有更好的主意吗?

在这种情况下,您可能应该使用枚举

enum EntityColors
{
  blue,
  red
};

在这种情况下,您可能应该使用枚举

enum EntityColors
{
  blue,
  red
};

只需使用
enum
在本例中,它是最具表现力的:

public enum ColorValue { Red, Blue };

只需使用
enum
在本例中,它是最具表现力的:

public enum ColorValue { Red, Blue };

更多的代码行还没有伤害到开发人员。一个类型错误且命名错误的变量确实存在。使用枚举类型,仅在有意义的地方使用布尔值-即是/否,真/假逻辑。

更多的代码行还没有伤害到开发人员。一个类型错误且命名错误的变量确实存在。使用枚举类型,仅在有意义的地方使用布尔值-即是/否,真/假逻辑。

也许您想解决其他问题

例如,您有一个打印功能

void print(string text, bool red) {...}
红色是重要的入口,其他的都是蓝色。为什么不将变量名更改为更有意义的名称呢

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

这将使API更加清晰,一旦您将重要颜色更改为橙色,就不必更改变量名。

也许您想解决另一个问题

例如,您有一个打印功能

void print(string text, bool red) {...}
红色是重要的入口,其他的都是蓝色。为什么不将变量名更改为更有意义的名称呢

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

这将使API更加清晰,一旦您更改了重要的颜色为橙色,就不必更改变量名。

这当然应该定义为枚举

您的问题是“如果一个变量是布尔型的,但可以有N个值中的2个有意义的值,那么该变量的名称是什么?例如:x的值可以是“红色”或“蓝色”

布尔值可以有两个值,“真”或“假”。在您的示例中,两个可能的值是“红”或“蓝”,因此这看起来不适合布尔变量


作为枚举实现需要更多的代码行,但可能更具可扩展性和可维护性,因为使用您的代码的未来开发人员将清楚它的意图,因此值得(较小的)实现成本。

这当然应该定义为枚举

您的问题是“如果一个变量是布尔值,但可以有N个值中的2个有意义的值,您将如何命名?”?示例:x的值可以是“红色”或“蓝色”

布尔值可以有两个值,“真”或“假”。在您的示例中,两个可能的值是“红色”或“蓝色”,因此这看起来不是布尔变量的理想候选值


作为枚举实现需要更多的代码行,但可能更具可扩展性和可维护性,因为使用您的代码的未来开发人员将清楚它的意图,因此值得(较小的)实现成本。

请告诉我;-)我同意,我认为在这种特殊情况下,枚举是合适的,因为“真”或“假”没有任何意义。我已经考虑过这一点,但它意味着更多的代码行用于不安全或不清晰的内容。“不过我会重新考虑的。”拉里,等你决定要添加另一种颜色时再考虑一下。您的变量是否将命名为
RedNotBlueNotYellow
?或者如果IsRed为假,这是否意味着它是蓝色还是黄色?使用enums很容易维护和读取。请参阅我上面的评论。我认为这是一个不值得为一个可能永远不会发生的案例构建可扩展性的案例我同意,我认为在这种特殊情况下,枚举是合适的,因为“真”或“假”没有任何意义。我已经考虑过这一点,但它意味着更多的代码行用于不安全或不清晰的内容。“不过我会重新考虑的。”拉里,等你决定要添加另一种颜色时再考虑一下。您的变量是否将命名为
RedNotBlueNotYellow
?或者如果IsRed为假,这是否意味着它是蓝色还是黄色?使用enums很容易维护和读取。请参阅我上面的评论。我认为在这种情况下,为一个可能永远不会发生的情况构建可扩展性是不值得的。我已经考虑过了,但这意味着更多的代码行用于一些类型不安全或不清晰的事情。不过我会重新考虑的。@Larry:当然,它更具可读性——通过查看代码,你会确切地知道你在处理什么,布尔值不能这么说。此外,您可以更轻松地扩展值集。我认为枚举更清晰。如果您继承了一些代码,其中有一个布尔变量在某个地方声明为“最具表现力”的名称“FalseManSatrueMeansb”,您会如何看待这些代码?我们已经考虑过了,但这意味着更多的代码行用于一些不再是类型安全或清晰的代码。不过我会重新考虑的。@Larry:当然,它更具可读性——通过查看代码,你会确切地知道你在处理什么,布尔值不能这么说。此外,您可以更轻松地扩展值集。我认为枚举更清晰。如果在某个地方声明了一个布尔变量,并使用“最具表现力”的名称“FalseManSatureManSB”,那么您对继承的某些代码会有什么看法?我尝试使用枚举,但它添加了更多的代码。情况是2个单选按钮中的1个。通常我只传递radiobutton1.的值作为参数检查。使用枚举意味着我必须遍历groupbox的控件,找到选中的单选按钮,将其映射到枚举值,然后使用switch语句在函数端处理枚举。无法