将shared_ptr隐藏在typedef后面是不错的风格?

Ale*_*x B 20 c++

我想减少代码中的一些视觉噪音,并隐藏shared_ptr在这样的typedef后面:

typedef boost::shared_ptr<SomeLongClass> SomeLongClassPtr;
Run Code Online (Sandbox Code Playgroud)

所以这:

void foo(const boost::shared_ptr<SomeLongClass>& a,
         boost::shared_ptr<SomeLongClass>& b);
Run Code Online (Sandbox Code Playgroud)

成为这个:

void foo(const SomeLongClassPtr& a, SomeLongClassPtr& b);
Run Code Online (Sandbox Code Playgroud)

另一方面,我担心我会减少代码的显式性.

哪个是更好的风格?

Jus*_*Boo 14

鉴于std :: string本身就是一个typedef,我认为你很好.我自己做.

甚至Scott Meyers建议使用typedef来方便您阅读代码.


编辑:有效的C++,第二版,第120页,第28项,第四段."...提供typedef,消除了需求......"

更有效的C++,第7版,第237页,第31项第1段.

更有效的C++,第7版,第238页,第31项代码示例后的第一段.


从本质上讲,不用担心.:-)


Jam*_*lis 9

我们TypePtrshared_ptr<Type>对象代码中使用typedef .拥有一个TypeConstPtrfor 也很有用shared_ptr<const Type>.

  • 同上.如果它提高了可读性和可维护性,那就不会是件坏事了. (2认同)