作者: ghostkcleung 時間: 2021-4-12 21:11 標題: OO 嘅 inherit 問題
本帖最後由 ghostkcleung 於 2021-4-12 21:14 編輯
咁多年都無關心過呢樣嘢,
如果 1 個 class 俾人 inherit 好多次,
就會越多 Depreciate。
唔用嘅嘢都係會佔 Memory,
呢個問題係咪無得避免?
// class B 承繼 A,即係裡面有 a,
// 但係無機會用到。
class A {
private:
int a;
public:
virtual int getValue(){
return a;
}
}
class B: public A {
private:
int b;
public:
int getValue () {
return b;
}
}
作者: KinChungE 時間: 2021-4-12 22:35
係, 冇錯
btw, 你可以用super::getValue()
作者: ghostkcleung 時間: 2021-4-13 01:48
係啦,電腦發展到今日,
其實一個 1MB 程式裡面,
我諗有超過 50% 嘅嘢係多餘,
依又可能額外花多咗好多倍嘅 Workload 去兜大咗個圈。
作者: stephenwong 時間: 2021-4-13 09:42
咁,你就要買更多 RAM,更多 Storage,更快 CPU!得咗,加速經濟發展!
作者: it_jobs 時間: 2021-4-13 15:06
咁多年都無關心過呢樣嘢,
如果 1 個 class 俾人 inherit 好多次,
就會越多 Depreciate。
唔用嘅嘢都係會 ...
ghostkcleung 發表於 2021-4-12 21:11
呢到首先問, 其實個寫法有無違背 oo 先? 我唔太記得啦.
其次, 呢個寫法本身有無問題, 係設計去失誤, 定係必然會發生? 要睇 int a 本身係放乜野, 點解要放 parent class?
換個角度, 可能寫個 pure virtual parent, 再分開 class A, class B, 各自有自已 int a, int b, implement 自己嘅 getValue, 咪可以唔會有彊屍 variable.
而家咁睇, 無事件, 無歷史背景, 你當然啱. 因為你將所有可能錯嘅野都隱藏左.
作者: it_jobs 時間: 2021-4-13 15:08
別外, 你可以睇下 mfc, x macro 等.
佢地用 programming 技巧令呢啲問題得以改善.
作者: pchai 時間: 2021-4-19 12:09
呢個就係OO本身既死症,"You wanted a banana but you got a gorilla holding the banana"
作者: faiwaic 時間: 2021-4-19 18:54
其實 樓主既問題係 getValue() 個 function 重覆左??
呢個似係 design 問題多過 OO 問題...
如果一個 class (當 C) 有 variable + interface, 個 class A 入面係 load Class C d variable and/or const 而冇任何 variable 係 class A, 咁 class B 係改 class C
variables , 咁應該就唔會有呢個問題~
又或者 class A 用 "public / protected int a" instead of "private int a" 去改 parent 個 variable 又得唔得?
作者: Mathk 時間: 2021-4-19 23:19
實務上 inherit 係俾你將啲嘢寫得更有條理同結構,如果可以預期一大堆嘢同質性高嘅就用啦,唔係嘅話你分開寫可能仲好,至於效能就由佢啦,(如果20年前或者30年前就真係要考慮咗先,)到你要考慮考能嘅時候就夠功能處理了。
作者: pchai 時間: 2021-4-20 10:15
呢個就係好多developer唔鍾意OOP既理由,java/OOP興起就培養出一D唔理資源既programmer, C++用64K內做到既野. 用java可能起個init object 都超過呢個數了.
作者: it_jobs 時間: 2021-4-20 14:23
C++ 唔係 oo 咩?
作者: pchai 時間: 2021-4-20 14:40
你岩. C++係OOP, 我應該再推前. 用C做example
作者: testest 時間: 2021-4-21 00:01
class A {
public:
// pure virtual function
virtual int getValue() = 0;
};
class B: public A {
private:
int b;
public:
int getValue () {
return b;
}
};
C++ 難學難精
作者: it_jobs 時間: 2021-4-21 14:15
class A {
public:
// pure virtual function
virtual int getValue() = 0;
};
class B: ...
testest 發表於 2021-4-21 00:01
只係呢2個 class, 就唔明為為何要 class A 要 virtual.
作者: it_jobs 時間: 2021-4-21 14:20
其實就算寫 c++, 一樣可以當 structural 寫, 所有野都係 function.
當你寫到有返咁上下大, 發覺要用 oop 先解決到問題, 先改用 oop 都可以.
講執行效率, foot print, 最好係 asm,
borland 老闆寫 delphi compiler (up to ver 4), 佢走後無人 maint 到, 重寫左幾年.
不過如果我做個個 web system, 有人提議用 asm 去做,
我估一係我辭職, 一係炒左提議果個人啦.
作者: KinChungE 時間: 2021-4-21 15:32
本身HTML/CSS/JS已經係唔efficient
作者: joe0joe 時間: 2021-4-21 15:56
有 Emscripten 同 asm.js
作者: it_jobs 時間: 2021-4-21 16:29
但當年佢地都解決左一啲問題. 如果師兄有更好提議, 不妨提出.
或者實作出黎, 睇下有無商機
作者: it_jobs 時間: 2021-4-21 16:33
快過 asm?
樓主唔要 overhead 喎, C++ 寫 OOP 都嫌, overhead 多.
咁 emscripten/webasm/asm.js 寫完係咪快過 C++/asm?
寫完搵咩人 maint?
作者: KinChungE 時間: 2021-4-21 16:50
以software project黎講, 縮短development time遠遠重要過減少overhead
作者: pchai 時間: 2021-4-21 16:57
其實OOP唔係問題. 係濫用OO攪到overhead過大先係問題.
作者: it_jobs 時間: 2021-4-21 17:05
我就係咁意思囉, 其實除 dev time, maint time 都重要.
你用 asm 寫係快, 咁你係咪唔會出錯, 唔會生老病死, 唔會離開公司先?
用 asm 寫 web app, 出左問題要 trobule shoot 幾耐?
如果一個 prd issue, 要查三年先知唔關 prg 事, 點用呀?
今時今日做 system 仲著眼手上果幾行曲, 有心向專發展都唔係唔得嘅.
作者: it_jobs 時間: 2021-4-21 17:10
係, 無好嘅規劃人才先係問題所在
OOP 人人識講, 但用就.......
作者: pchai 時間: 2021-4-21 17:22
我見有個天才. 用java寫左個vistor counter, 個tomcat踼起就要16GB Ram. 行唔夠2個鐘就不斷話爆heap. 問返佢重話係咁架啦..
作者: it_jobs 時間: 2021-4-21 23:29
我見有個天才. 用java寫左個vistor counter, 個tomcat踼起就要16GB Ram. 行唔夠2個鐘就不斷話爆heap. 問 ...
pchai 發表於 2021-4-21 17:22
係,呢啲人寫 java 會爆,寫 nodejs, python, vb, c#, cpp, c, asm 都一樣會咁。
好彩的話 c, asm 可以捱多一陣。
作者: it_jobs 時間: 2021-4-22 10:27
其實有幾多人用過仿 OOP 嘅 tools?
用過之後有咩感覺呢?
作者: joe0joe 時間: 2021-4-27 00:33
其實重興OOP嘅咩,唔係興FP嘅咩?
作者: KinChungE 時間: 2021-4-27 12:41
大把backend system仲行緊Java/C#/PHP配OO
肯定過半數
作者: hihihi123hk 時間: 2021-4-28 09:57
咁多年都無關心過呢樣嘢,
如果 1 個 class 俾人 inherit 好多次,
就會越多 Depreciate。
唔用嘅嘢都係會 ...
ghostkcleung 發表於 2021-4-12 21:11
Composition over Inheritance
好多 Language 做唔到,語言限制表達唔到
好多人唔識點運用
最後都係 Inheritance
via HKEPC IR Extreme 4.2.3 - iOS(4.0.2)
作者: vsp 時間: 2021-4-28 14:06
已經用到inherit字眼
還不明白


