据我了解,应该在类内部声明与类相关的枚举,如下所示:
namespace Sensors {
class MySensor {
public:
enum class SensorStatus {
kSensorActive,
kSensorInactive
}
SensorStatus GetCurrentStatus(void);
};
}
我遇到的问题是,它导致程序另一部分中的以下代码。
Sensors::MySensor::SensorStatus current_status = mySensor.GetStatus();
switch (current_status):
case Sensors::MySensor::SensorStatus::kSensorActive: // 47 characters!
printf("Sensor is active.");
break;
case Sensors::MySensor::SensorStatus::kSensorInactive: // 49 characters!
printf("Sensor is inactive.");
break;
我赞赏它非常清楚地指出kSensorActive
和kSensorInactive
指代,在那里没有歧义。但是,如果您尝试遵循指定80个字符的样式指南,则会导致很多换行符,这会降低清晰度,恕我直言。如果我们有一个采用两个不同枚举器的函数,则会出现一个长长的例子。MyFunction(NamespaceA::MyFirstClass::MyFirstEnum::AnEnumerator, NamespaceB::MySecondClass::MySecondEnum::ADifferentEnumerator)
-多达127个字符。
这些长名字是常见的还是我缺少什么?
首先,您重复以下内容:
该名称kSensorActive
不必说Sensor
是否已经SensorStatus
在名称中指定了。或者您可以将其Sensor
从SensorStatus
内部移除MySensor
。也许两者都有。
将事物包装在类和名称空间中的想法是,您可以为“同类事物”反复使用相同的名称,而不是始终使用完全唯一的名称。
您也可以在本地使用更改名称using
,例如
using Status = Sensors::MySensor::SensorStatus;
然后是我们Status::kSensorActive
您以前使用过的东西。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句