布尔值,英语否定,简单地摆脱布尔值

时间:2010-08-11 15:23:21

标签: language-agnostic

当您编码时,您经常会有一个表示两种可能性的标志,如下所示:

CACHING_AUTHORIZED
CACHING_UNAUTHORIZED

CACHING_ON
CACHING_OFF

如果你然后使用布尔值来存储它,通常它只是“读取奇怪的”:

CACHING_ON = false;
CACHING_OFF = true;

CACHING_ON = true;
CACHING_OFF = false;

其中一种可能性是写:

CACHING

然后简单地使用代码编码:

if ( CACHING )

if ( !CACHING )

但有时你真的想要'ON'和'OFF'形式。

事情是:它不会改变你选择的那个,无论你如何转动它都没有多大意义。

它与布尔的“getter”问题并不完全不同,这肯定会引起很多激烈的争论(我们应该使用 isConditionTrue getIsCondition 或< em> isCondition 或 getCondition 或只是条件 conditionTrue 等:我有点滑稽,但重点是关于这一点已经进行了很长时间的辩论,这个话题肯定不是很接近。)

我的问题不同:看不到

CACHING_ON = false;
CACHING_OFF = true;

,也不

CACHING_ON = true;
CACHING_OFF = false;

有道理,我们不应该简单地删除布尔值并执行:

CACHING_ON = 1;
CACHING_OFF = 2;

当然,你失去了布尔值,但至少'1'和'2'不能带来任何混乱。

我的观点是:使用布尔值和true / false经常令人困惑,因为我们混合了两个不同的东西:英语和逻辑,而且它们根本就不混合。

在这里使用 int 是不是很糟糕,即使只有两个可能性很难?

1 个答案:

答案 0 :(得分:1)

您的方法不清楚该值是否为布尔值。我觉得我应该能够分配值3。

我真的不明白你的观点。如果您有2个布尔值,则表示4种可能的状态,因此您不应该以一种暗示只有2个选项的方式命名变量。也许你应该使用枚举和常量或标志。

CACHING = ON
CACHING = OFF
CACHING = EITHER
CACHING = UNKNOWN
CACHING = UNKNOWABLE
CACHING = UNTHINKABLE