簡體   English   中英

布爾值,英語否定式,完全擺脫布爾值

[英]boolean, english negation and simply getting rid of the boolean

很多時候,當您編寫代碼時,會有一個標志指示兩種可能性,如下所示:

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”兩種形式。

問題是:無論您選擇哪一個,它並沒有太大變化,無論您如何轉動它都沒有多大意義。

它與boolean的“ getter”問題並不完全不同,后者肯定會引起很多激烈的爭論(我們應該使用isConditionTruegetIsCondition還是isConditiongetCondition還是簡單地使用conditionconditionTrue等。:我有點滑稽但問題的根源在於,對此已經進行了很長時間的辯論,而且這個話題肯定還沒有結束。

我的問題是不同的:看到沒有

CACHING_ON = false;
CACHING_OFF = true;

也不

CACHING_ON = true;
CACHING_OFF = false;

有意義,我們不應該簡單地擺脫布爾值而去做嗎:

CACHING_ON = 1;
CACHING_OFF = 2;

當然,您正在丟失布爾值,但至少'1'和'2' 不會帶來任何混亂。

我的觀點是:使用布爾值和true / false經常會造成混淆,因為我們混用了兩種不同的東西:英語和邏輯,它們根本就完全不混在一起。

在這里只有兩個可能的情況下使用int很難嗎?

您的方法不清楚值是否為布爾值。 我覺得我應該能夠賦值3。

我真的不明白你的意思。 如果您有2個布爾值,則表示4個可能的狀態,因此您實際上不應以暗示只有2個選項的方式來命名變量。 也許您應該使用枚舉和常量或標志代替。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM