最近看到專案內一些用法覺得不太合理想提出來看大家有什麼看法
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這樣寫, 要求修改....
不是很認同,提出來請教
謝謝