最近看到专案内一些用法觉得不太合理想提出来看大家有什么看法
class Foo : public / private IBarListener (1)
{
public / private: (2)
void OnBarXxx() override;
public:
Foo(){ 这边会把this 注册给listener}
};
以上(1)(2)有四种组合
我自己觉得都该用public 较为合理
我的想法是
1. c# java 等语言继承interface也必须维持在public field(虽然我无法明确说出这样
的用意)
2. private继承 语意上变成了"has a" 根本不太合理 这边刚好是在自己的建构子注册给
别人,别人才能用base pointer来接.
3. 写在public field 我认为好处是
有可能别人不是用base class接 却想callback,如果有这需求就不需改code
另外就是unit test也可以直接呼叫.
但这边盲点就是,其实别人不该直接invoke concrete class的 callback, 摆在private
似乎也合理?
因为被盲目的说大家习惯都用private这样写, 要求修改....
不是很认同,提出来请教
谢谢