【发布时间】:2018-04-21 22:53:59
【问题描述】:
我目前正在编写一个适配器来在两个框架 A B 之间转换类型。我对名称有点麻烦,因为在我看来它们变得很长而且不可读。然后我决定以一种非常嵌套的方式使用命名空间,这是我在其他任何地方都很少见到的。
旧:
TypeA mylib::cvtToAtype(TypeB) {}
TypeB mylib::cvtToBtype(TypeA) {}
新:
TypeA mylib::cvt::to_a::type(TypeB) {}
TypeB mylib::cvt::to_b::type(TypeA) {}
您认为这是一种不错的风格,还是认为有很大的缺点?我认为它看起来很干净,但是如果有人决定“使用命名空间”,它可能会被滥用。那么 type 并不是一个真正的唯一名称来标识函数正在做什么。此外,名为“cvt”的命名空间也可能不是超级唯一的。
你怎么看?
【问题讨论】:
-
这取决于你的需要,在 C++ 中使逻辑复杂性没有缺点。
-
如果我真的不喜欢一件事,那就是深度嵌套的命名空间被用作架构设备。
-
“因为我认为它们变得很长且难以阅读。”,
cvtToAtype比cvt::to_a::type短。 Camel case vs "namespace" case -> 相同的可读性(如果使用命名空间,它可能会简化阅读,但当前名称似乎很差)... -
@Jarod42: 好吧,我有点滥用了下划线可读性的好处,用于我的 camelCase。但现在不能把所有的东西都转移到下划线。尤其是当我在代码的所有其他部分中对它很满意时。只有这些转换器会产生如此烦人的名字:D
-
@Neil:嗯,你对:TypeA cvt_to_A::type(TypeB) {} 说什么? :D
标签: c++ namespaces coding-style naming