我应该在这里使用什么样的指针?

时间:2018-02-11 10:52:14

标签: c++ c++11

我和一位同事在一个旧的大型代码库上工作。代码库使用了大量的std::shared_ptr,之前的开发人员对长属性名称(例如m_first_username)非常喜欢。

我们代码中的一些方法访问了许多属性,因此我们的代码往往非常冗长:

if (m_first_username->isSomethingOrOther() || m_second_username->isOtherOrSomething()...

因此,为了使代码更具可读性,我的同事希望在本地范围内使用更多std::shared_ptr &

const std::shared_ptr<...> &tmp = m_first_username->returnsASharedPtr() tmp->isSomethingOrOther();

由于共享指针使用计数,我不同意。

使这段代码更具可读性的最佳方法是什么?保持使用shared_ptr的常量引用,使用std::weak_ptr或使用长行代码?

1 个答案:

答案 0 :(得分:1)

根据@ nwp的评论 - 在本地对变量名称进行别名的正确方法是:

auto& v1 = m_first_user_name;

如果您想要在问题中发布的“returnAsSharedPointer”的路径,那么您想要在m_first_user_name和m_second user_name的类中使用的是标准C ++ enable_shared_from_this

总的来说,虽然它主要是基于意见的,但我相信你会发现大多数经验丰富的C ++开发人员会发现新代码 less 比旧代码更易读。长的描述性变量名称没有任何问题。