【发布时间】:2018-04-06 06:33:55
【问题描述】:
据我了解,与类相关的枚举应该在类中声明,如下所示:
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 个字符。
这些长名字很常见还是我遗漏了什么?
【问题讨论】:
-
你总是可以给类型起别名:en.cppreference.com/w/cpp/language/type_alias