枚举,类,名称空间和长名称

天'

据我了解,应该在类内部声明与类相关的枚举,如下所示:

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;

我赞赏它非常清楚地指出kSensorActivekSensorInactive指代,在那里没有歧义。但是,如果您尝试遵循指定80个字符的样式指南,则会导致很多换行符,这会降低清晰度,恕我直言。如果我们有一个采用两个不同枚举器的函数,则会出现一个长长的例子。MyFunction(NamespaceA::MyFirstClass::MyFirstEnum::AnEnumerator, NamespaceB::MySecondClass::MySecondEnum::ADifferentEnumerator)-多达127个字符。

这些长名字是常见的还是我缺少什么?

马特·彼得森

首先,您重复以下内容:

该名称kSensorActive不必说Sensor是否已经SensorStatus在名称中指定了。或者您可以将其SensorSensorStatus内部移除MySensor也许两者都有。

将事物包装在类和名称空间中的想法是,您可以为“同类事物”反复使用相同的名称,而不是始终使用完全唯一的名称。

您也可以在本地使用更改名称using,例如

using Status = Sensors::MySensor::SensorStatus;

然后是我们Status::kSensorActive您以前使用过的东西。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章