簡體   English   中英

我應該對非是/否答案變量使用布爾類型嗎?

[英]Should I use boolean type for non yes/no answer variable?

我正在使用初學C ++小組進行編碼,我們正在創建一個“Car”類。 有人建議'輪胎類型'作為類的可能變量/屬性作為布爾類型。 然后另一個人詢問布爾人是否應該直接回答是/否。

我只是想知道同樣的事情。 你如何最好地管理變量,以及如何為這個變量指定兩個選項,例如冬季/夏季?

這要看情況。

您的目標是編寫清晰,可讀,可維護和正確的代碼。 並不是說bool需要一個是和否答案,因為它是否是一個問題,是否使用布爾(或任何其他類型)可以幫助您實現這些目標。 如果它使您的代碼清晰,那么值得考慮。 如果它讓事情變得混亂,那不是一個好主意。

例如,您可能只有兩種類型的輪胎,但請考慮以下幾點:

  • 你怎么知道你以后不會再添加更多? 你不想用腳射擊自己。
  • 在編寫/閱讀代碼時,你怎么記得true是“夏天”而false是“冬天”? 你是否必須在頭腦中保持這些信息/總是在某處查找? 犯錯會容易嗎? 是否會使不熟悉您的代碼的讀者感到困惑?

想想那些事情。 在你的情況下,使用布爾值肯定會完成工作,我會說它對enum很有用,即使你現在(或永遠)只有兩個值。 例如:

enum TireType { WinterTire, SummerTire };

現在一切都到位了:

  • 如果您願意,可以在將來添加新類型,沒有重大問題。
  • 變量TireType t記錄了自己,我們一眼就知道t是輪胎類型。
  • 輸入值時,有少得多錯誤的機會:這將是非常困難的混淆WinterTireSummerTire ,而truefalse舍去語義。

布爾值有兩個選項,但這些選項是“true”或“false”(或偶爾,“yes”和“no”)。

我們通常不代表其他變量,有兩個選項作為布爾值。

如果你有輪胎類型(目前恰好是兩個),我會建議enum

與往常一樣,也有例外。 如果您的輪胎類型是“輪胎上有油”和“輪胎上沒有油”,那么您可以使用名為tyreHasOilOnIt的布爾值。

真的,這取決於你。

布爾類型通常是具有兩個值的值,一個是真值,另一個是假值。 這在某種程度上可以彎曲到其他含義。 在你看到有關輪胎類型的討論的情況下,我不知道這兩個值是什么意思,直到閱讀評論。

在我看來,當值不是這樣的自我解釋時,我不會使用布爾值。

在你的情況下,如果在編寫程序時輪胎的類型是已知的,我將使用某種類型的enum ,如果它們不知道只是一個普通的字符串。

我建議不要使用enum或bool類型作為輪胎類型,因為可能的變量/屬性可能會隨着您指定是/否或冬季/夏季而變化。 最好將它用作short int,你可以跟蹤或映射關於是,否,冬天,夏天的值。 這將允許您根據需要分配或更改,類將永遠不需要更改。

Example :

Class car
{

// we will use tyre type to map enum
//type and other type if required 

int tyreType;

};

enum tyre_type_t
{
//default value is considered 100
// since we can use previous     
 //value any other purpose.
WINTER = 100,
SUMMER
}

int main()
{
Car obj;

obj.tyreType = 1; // Yes
obj.tyreType = 0; // No
obj.tyreType = WINTER;
// Now we can assig enum.          
 // values     //too.

return  0;
}

快樂的編碼

Example :

Class car
{

// we will use tyre type to map enum
//type and other type if required 

int tyreType;

};

enum tyre_type_t
{
//default value is considered 100
// since we can use previous     
 //value any other purpose.
WINTER = 100,
SUMMER
}

int main()
{
Car obj;

obj.tyreType = 1; // Yes
obj.tyreType = 0; // No
obj.tyreType = WINTER;
// Now we can assig enum.          
 // values     //too.

return  0;
}

快樂的編碼

暫無
暫無

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

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