我应该对非是/否答案变量使用布尔类型吗?

时间:2016-09-29 00:07:31

标签: c++

我正在使用初学者C ++小组进行编码,我们正在创建一个“Car”类。有人建议'轮胎类型'作为类的可能变量/属性作为布尔类型。然后另一个人询问布尔人是否应该直接回答是/否。

我只是想知道同样的事情。你如何最好地管理这个变量,以后如何为这个变量指定两个选项,比如冬天/夏天?

5 个答案:

答案 0 :(得分:11)

嗯,这取决于。

您的目标是编写清晰,可读,可维护且正确的代码。并不是bool需要一个是和否一个答案,因为它是否是一个问题,即是否使用布尔(或任何其他类型)可以帮助您实现这些目标。如果它使您的代码清晰,那么值得考虑。如果它让事情变得混乱,那不是一个好主意。

例如,您可能只有两种类型的轮胎,但请考虑以下几点:

  • 你怎么知道以后不再添加更多?你不想用脚射击自己。
  • 在编写/阅读代码时,您如何记住true是“夏天”而false是“冬天”?你是否必须在头脑中保持这些信息/总是在某处查找?犯错会容易吗?是否会使不熟悉您的代码的读者感到困惑?

想想那些事情。在你的情况下,使用布尔值肯定会完成工作,我会说它对enum很有用,即使你现在(或永远)只有两个值。 E.g:

enum TireType { WinterTire, SummerTire };

现在一切都到位了:

  • 如果您愿意,可以在将来添加新类型,而不会出现重大问题。
  • 变量TireType t记录了自己,我们一眼就知道t是轮胎类型。
  • 输入值时出错的可能性要小得多:将WinterTireSummerTire混为一谈非常困难,而truefalse则放弃所有语义。

答案 1 :(得分:7)

布尔值有两个选项,但这些选项是“true”或“false”(或偶尔,“是”和“否”)。

我们通常不会将其他变量用两个选项表示为布尔值。

如果您有轮胎类型(目前恰好有两种),我建议enum为此。

与往常一样,也有例外。如果您的轮胎类型是“轮胎上有油”和“轮胎上没有油”,那么您可以使用名为tyreHasOilOnIt的布尔值。

真的,这取决于你。

答案 2 :(得分:6)

布尔类型通常是具有两个值的值,一个是真值而另一个是假的。这在某种程度上可以弯曲到其他含义。在你看到有关轮胎类型的讨论的情况下,我不知道这两个值是什么意思,直到阅读评论。

在我看来,当值不是这样的自我解释时,我不会使用布尔值。

在你的情况下,如果你在编写程序时已经知道了轮胎的类型,我将使用某种enum,如果它们不为人所知只是一个普通的字符串。

答案 3 :(得分:0)

我建议不要对轮胎类型使用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;
}

快乐编码

答案 4 :(得分: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;
}

快乐编码