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