很多时候,当你的代码,你有一个标志,指示两种可能性,就像这样:布尔,英语否定只是摆脱布尔
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)
但有时你确实想同时得到'开'和'关'形式。
事情是:它不会改变你挑选的哪一个,它根本没有多大意义,不管你如何打开它。
这并非完全不同的“吸气”问题布尔,这当然是受到了很多激烈的争论(我们应该用isConditionTrue或getIsCondition或isCondition或getCondition或者干脆条件或conditionTrue等:我有点滑稽,但这一点立场,并且在这方面进行了很长时间的辩论,而且这个话题肯定不是很接近)。
我的问题是不同的:可见,无论是
CACHING_ON = false;
CACHING_OFF = true;
也不
CACHING_ON = true;
CACHING_OFF = false;
意义,不应该干脆摆脱了布尔的和做的事:
CACHING_ON = 1;
CACHING_OFF = 2;
当然,你失去了布尔值,但至少'1'和'2'不能 b响任何混乱。
我的观点是:使用布尔值和真/假通常是令人困惑的,因为我们混合了两种不同的东西:英语和逻辑,他们根本就没有混合。
在这里使用int难道只有两种可能吗?
有趣的是如何防止'主观'标签被使用。就好像世界或每个问题/答案都是黑色或白色:) – NoozNooz42 2010-08-11 15:24:29
为什么要同时打开和关闭窗体?看起来合乎逻辑的是,这两个领域是相互排斥的,它们都不可能是真的或是假的。 – 2010-08-11 16:13:43
@Dave:因为当它用作方法的参数时,它几乎不可能读取。要么你只有一种形式,并且需要做*方法(CACHING)*和*方法(!CACHING)*(后者从英文角度看是不可读的)**或者**你需要做*方法(true) *或* method(false)*当有多个参数时,这是主要的PITA。 – NoozNooz42 2010-08-11 23:32:07