键入一个智能指针是不好的做法吗?

时间:2015-08-24 00:12:36

标签: c++ smart-pointers

我在当前项目中使用智能指针,使用它们时必须输入长行代码似乎非常麻烦。

因为我希望我的代码更清晰,更容易理解,所以我开始输入类似智能指针的类型:

typedef std::unique_ptr<System> SystemPtr;

所以我的问题是,键入一个智能指针是不好的做法吗?

2 个答案:

答案 0 :(得分:12)

它没有任何问题,但你选择的名字太可怕了。如果那是一个共享指针,一个唯一指针,一个侵入式引用计数com指针,或者只是一个指向System的原始指针,那么这个读者就不知道了。

如果你真的需要简洁,

template<class T>using up=std::unique_ptr<T>;

是使用点上的另一个字符而不是您的计划up<System>,并且更清楚地表明这是一个唯一的指针,并且不需要每种类型的typedef。在某些情况下,它会导致双关语。

答案 1 :(得分:1)

正如其他人所提到的那样,语法上没有任何不正确之处。我只是想补充说,不得不寻找或依赖Intellisense这样的东西,在大型项目中轻松找到定义可能会令人不快。程序员依赖于在区域内停留&#34;尽力而为。即使只需要花费60秒来追踪一个typedef就可以破坏凹槽。

出于这样的原因,我觉得在像你这样的情况下,简单地说,不要自由地应用typedef是一种更好的做法。您应该能够通过遍历相关范围的顶部轻松快速地找到变量的类型。

说实话,你的类型不长(高级元类型可以多行)。