作者yoco315 (眠月)
看板C_and_CPP
標題Re: [問題] 有關全域變數
時間Sun Jun 10 17:55:47 2012
※ 引述《OppOops (Oops)》之銘言:
: 開發平台(Platform): (Ex: VC++, GCC, Linux, ...)
: C
: 問題(Question):
: 常常會有些建議: 少用全域變數.
: 1.那是否我去宣告一個function 專門來return static variable就比較好呢?
: 2.如果用這樣的方式,
: 在外部使用function 內部的static array 會不會有不好的事情??
function return static variable 就是 global variable,沒有差別。
不用懷疑,把要用到的東西傳進去就對了,
如果參數很多,那就需要分析參數的性質,
把能群組在一起的參數寫成一個 struct 或是 class 包裝起來,合成一個參數,
分析的結果可以有效減少參數的數目,
分析的過程可以協助理解程式的架構。
參數的包裝,不只可以一層,也可以很多層,
參數的包裝,不只可以包含「值」,還可以包含「動作」,
可以嘗試把根據不同的參數值採取不同動作的方法,
改成把動作直接寫在 class 的 virtual function,
然後直接呼叫參數的 member function。
不知不覺你就作到了 dependency injection T_T
你的程式碼不僅充分發揮了物件導向的優點,
而且還兼具有高度 testability 的特色,
太厲害了,太厲害了。
--
To iterate is human, to recurse, divine.
遞迴只應天上有, 凡人該當用迴圈. L. Peter Deutsch
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 182.235.170.158
推 littleshan:我很久以前就對於許多API都使用context這個參數而好奇 06/10 20:23
→ littleshan:後來才了解到這是為了避免全域變數的設計 06/10 20:24
→ littleshan:四人幫的Design pattern根本就不該放什麼singleton 06/10 20:24
→ littleshan:應該放context pattern才對 06/10 20:25
推 VictorTom:推:) 06/10 20:28
推 linjack:singleton 亂用害死人+1 ..... 06/10 22:34
推 Ebergies:放 singleton 純粹只是因為他好用吧... 06/10 23:38
→ james732:有好用嗎?我覺得它只是更複雜化的全域變數 XD 06/10 23:40
→ Ebergies:你看這麼多人喜歡用 global variable 就知道多好用了吧XD 06/10 23:47
→ james732:可是我覺得singleton還複雜化了 orz 06/10 23:48
→ diabloevagto:singleton重點不是在global variable... 06/11 00:01
→ azureblaze:可是很多人其實只要global的部份卻用了singleton 06/11 00:09
→ loveme00835:第一段是 "Preserve Whole Object" 第二段是 "Proxy 06/11 01:26
→ loveme00835:Pattern", 如果能用靜態多型相依性會更低 06/11 01:27