使用这个 "shortcutting function" 是一个好习惯吗?
Does using this "shortcutting function" is a good practice?
我有一个基于事件的通信系统,这是它的简化版本:
class A: 包含派生自 class B
的元素
class B: 有一个指向其所有者 A
的指针
所以当一个B想和其他B-s通信时,它调用A的Broadcast()方法:
- m_owner->广播();
但我想知道:
- 我应该为 B 创建一个受保护的 Broadcast() 方法吗,就是这样:
- m_owner->广播();
优点:
我可以只写 Broadcast() m_owner->Broadcast()
- 这使代码更清晰。
缺点:
程序中会有+1个函数调用。
- 但这可以通过使方法内联
来避免
这是一个好习惯吗?为什么是,为什么不是?
在您所描述的情况下,可能确实没有太大区别。
但将来您可能会发现需要在每个调用 Broadcast
的地方添加额外的代码,例如日志记录或互斥锁。在这种情况下,单独的功能将非常有用。
您还提到您从 B
中得到 classes derived。如果这是调用 m_owner->Broadcast()
的 derived class,并且 m_owner
是基 class 字段,那么这不是一个好的图案。派生 classes 应该更好地访问父级的受保护函数,而不是直接访问数据成员。
我有一个基于事件的通信系统,这是它的简化版本:
class A: 包含派生自 class B
的元素class B: 有一个指向其所有者 A
的指针所以当一个B想和其他B-s通信时,它调用A的Broadcast()方法:
- m_owner->广播();
但我想知道:
- 我应该为 B 创建一个受保护的 Broadcast() 方法吗,就是这样:
- m_owner->广播();
优点:
我可以只写 Broadcast() m_owner->Broadcast()
- 这使代码更清晰。
缺点:
程序中会有+1个函数调用。
- 但这可以通过使方法内联 来避免
这是一个好习惯吗?为什么是,为什么不是?
在您所描述的情况下,可能确实没有太大区别。
但将来您可能会发现需要在每个调用 Broadcast
的地方添加额外的代码,例如日志记录或互斥锁。在这种情况下,单独的功能将非常有用。
您还提到您从 B
中得到 classes derived。如果这是调用 m_owner->Broadcast()
的 derived class,并且 m_owner
是基 class 字段,那么这不是一个好的图案。派生 classes 应该更好地访问父级的受保护函数,而不是直接访问数据成员。