pingooo
[C++] 追繼承很長又擁有好幾個次級物件的類別,一個方法到底在哪裡定義、做了什麼,要翻出祖宗十八代。!@#$%^&
類別多到迷路,只好開個 Google spreadsheet 來建表一覽。OOP 寫到這樣真的是好設計嗎?
pingooo
有的事自己做,有的事叫老爸做,有的根本是 N 代祖先幫你做,這種行徑實在太不孝順了!(誤)
Zombie
現在應該比較偏好 composite,比較不建議繼承了吧
幕後祕辛
Zombie : multiple inheritance?!
pingooo
我也覺得 composite + inline 可兼顧功能、可讀性和效能,但有些老扣...
pingooo
不過 strategy 和 template method 這些設計需要繼承才能運作。
Zombie
pingooo : 這些 pattern 大概二、三層就很多了吧....
pingooo
有時候不同的輸入資料需要不同的實作,實作之間又有部分邏輯相同,而且是逐漸加進去的,不知不覺就有人寫出 N 層了...
pingooo
這時候就有點懷念 Go 的 interface
pingooo
看到 FooWriter 繼承 FooOutput 就想丟筆了,什麼鬼設計!
gugod
ProblemFactory extends BugIterator!
Fred
所以我都說 C++ 是個亂倫語言呀 XD
pingooo
Fred : 沒亂到倫上吧?
pingooo
hmm... 這樣說有理
benlau (⊚‿‿⊚)
Diamond在C++本身就是禁忌啦
Thinker
可以用 gdb 來幫你, 找出一個 instance, 然後取 method 的 address
Thinker
從 address 可以幫你找出 symbol
Thinker
我覺的 C++ 最主要的問題是定義和宣告是分開的,再加上 conditional compiling,於是靜態分析的工具很難幫你準確的找出之間的關係。
York
有了 Go 就忘了 C++ 吧,如果有得選的話
pingooo
是有 fork 出來跑 gdb 印 stack dump 的作法(會動,但覺得有點噁)
載入新的回覆