使用这个 "shortcutting function" 是一个好习惯吗?

Does using this "shortcutting function" is a good practice?

我有一个基于事件的通信系统,这是它的简化版本:

class A: 包含派生自 class B

的元素

class B: 有一个指向其所有者 A

的指针

所以当一个B想和其他B-s通信时,它调用A的Broadcast()方法:

但我想知道:

优点:

  • 我可以只写 Broadcast() m_owner->Broadcast()

    • 这使代码更清晰。

缺点:

  • 程序中会有+1个函数调用。

    • 但这可以通过使方法内联
    • 来避免

这是一个好习惯吗?为什么是,为什么不是?

在您所描述的情况下,可能确实没有太大区别。

但将来您可能会发现需要在每个调用 Broadcast 的地方添加额外的代码,例如日志记录或互斥锁。在这种情况下,单独的功能将非常有用。

您还提到您从 B 中得到 classes derived。如果这是调用 m_owner->Broadcast()derived class,并且 m_owner 是基 class 字段,那么这不是一个好的图案。派生 classes 应该更好地访问父级的受保护函数,而不是直接访问数据成员。