使用这种“快捷功能”是一种很好的做法吗?

时间:2016-12-19 12:56:02

标签: c++ events messaging

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

A类:包含从B类派生的元素

B类:有一个指向其所有者A的指针

因此当B想要与其他B-s通信时,它会调用 A的Broadcast()方法:

  • m_owner->广播();

但我想知道:

  • 我应该为B 创建受保护的 Broadcast()方法,就是这样:
    • m_owner->广播();

优点:

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

    • 这使代码更清晰。

缺点:

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

    • 但是,通过使用内嵌
    • 方法可以避免这种情况

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

1 个答案:

答案 0 :(得分:2)

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

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

另外,您提到您有来自B派生类。如果这是一个调用m_owner->Broadcast()派生的类,而m_owner是一个基类字段,那么这不是一个好的模式。派生类应该更好地访问父的受保护函数,而不是直接访问数据成员。