我正在使用初学者C ++小组进行编码,我们正在创建一个“Car”类。有人建议'轮胎类型'作为类的可能变量/属性作为布尔类型。然后另一个人询问布尔人是否应该直接回答是/否。
我只是想知道同样的事情。你如何最好地管理这个变量,以后如何为这个变量指定两个选项,比如冬天/夏天?
答案 0 :(得分:11)
嗯,这取决于。
您的目标是编写清晰,可读,可维护且正确的代码。并不是bool
需要一个是和否一个答案,因为它是否是一个问题,即是否使用布尔(或任何其他类型)可以帮助您实现这些目标。如果它使您的代码清晰,那么值得考虑。如果它让事情变得混乱,那不是一个好主意。
例如,您可能只有两种类型的轮胎,但请考虑以下几点:
true
是“夏天”而false
是“冬天”?你是否必须在头脑中保持这些信息/总是在某处查找?犯错会容易吗?是否会使不熟悉您的代码的读者感到困惑?想想那些事情。在你的情况下,使用布尔值肯定会完成工作,我会说它对enum
很有用,即使你现在(或永远)只有两个值。 E.g:
enum TireType { WinterTire, SummerTire };
现在一切都到位了:
TireType t
记录了自己,我们一眼就知道t
是轮胎类型。WinterTire
与SummerTire
混为一谈非常困难,而true
和false
则放弃所有语义。答案 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;
}
快乐编码