【问题标题】:Is "object.EnumConstant" instead of "Class::EnumConstant" a code smell?“object.EnumConstant”而不是“Class::EnumConstant”是代码异味吗?
【发布时间】:2016-01-07 13:00:27
【问题描述】:

我有这样的代码

void disconnect(control::lib::DisconnectReason reason) {
   if(reason.getCode() == reason.C_Abnormal) {
     ...
   }
}

这是代码味吗?我从未见过有人这样做,但枚举常量通常是通过类名访问的。但这会导致名字很长,就我而言

if(reason.getCode() == control::lib::DisconnectReason::C_Abnormal) {

在这里做什么更好?

【问题讨论】:

  • 据我所知,人们只是typedef他们
  • @deW1 你不能typedef枚举名称。
  • 我只使用后者,但我可以看到你得到了什么,因为名称在命名空间等方面变得很长
  • @JoachimPileborg 我的错:>
  • 但是你可以#define them :/ 那肯定有味道。

标签: c++ coding-style enumeration


【解决方案1】:

这不是问题。就像您可以使用.-> 访问类静态变量一样,您可以以同样的方式访问枚举名称,只是不应该使用它,因为.(或->)表明这个变量/名称是caller-object 的成员,在这些情况下不正确。

【讨论】:

  • 我敢打赌 OP 知道这一点。对可能的缺点更感兴趣。
猜你喜欢
  • 1970-01-01
  • 2011-02-04
  • 1970-01-01
  • 2011-05-30
  • 1970-01-01
  • 2018-11-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多