【发布时间】:2011-03-04 09:59:55
【问题描述】:
我刚刚开始研究一个新的代码库,其中每个类都包含一个 shared_ptr typedef (similar to this),例如:
typedef boost::shared_ptr<MyClass> Ptr;
节省键入 boost::shared_ptr 的唯一目的是什么?
如果是这样,是唯一不这样做的理由
#define Ptr boost::shared_ptr
在一个常见的标题中,#define 的一般问题?然后你可以这样做:
Ptr<MyClass> myClass(new MyClass);
这只是打字而已
MyClass::Ptr myClass(new MyClass);
并将 Ptr 定义保存在每个类中。
【问题讨论】:
-
一般情况下,除非绝对必要,否则应避免使用宏,并在确实需要它们时谨慎命名。 C++ 名称可以包含在类、函数或命名空间范围内,并且在不同上下文中使用相同名称时不会导致冲突。宏名称会在每个范围内呕吐,并且可以以完全意想不到的方式无形地更改代码。
-
当我看到 boost::shared_ptr 我确切地知道它的作用。如果我在代码中看到 Ptr,我必须查找它的含义,并且在不同的模块中存在具有不同含义的潜力(因为您的同事可能在他的代码中对它的定义不同)。保持代码清晰并使用全名。
标签: c++ boost naming-conventions shared-ptr