Re: [問題] 有關全域變數

看板C_and_CPP (C/C++)作者 (眠月)時間14年前 (2012/06/10 17:55), 編輯推噓4(4010)
留言14則, 8人參與, 最新討論串2/3 (看更多)
※ 引述《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

06/10 20:23, , 1F
我很久以前就對於許多API都使用context這個參數而好奇
06/10 20:23, 1F

06/10 20:24, , 2F
後來才了解到這是為了避免全域變數的設計
06/10 20:24, 2F

06/10 20:24, , 3F
四人幫的Design pattern根本就不該放什麼singleton
06/10 20:24, 3F

06/10 20:25, , 4F
應該放context pattern才對
06/10 20:25, 4F

06/10 20:28, , 5F
推:)
06/10 20:28, 5F

06/10 22:34, , 6F
singleton 亂用害死人+1 .....
06/10 22:34, 6F

06/10 23:38, , 7F
放 singleton 純粹只是因為他好用吧...
06/10 23:38, 7F

06/10 23:40, , 8F
有好用嗎?我覺得它只是更複雜化的全域變數 XD
06/10 23:40, 8F

06/10 23:47, , 9F
你看這麼多人喜歡用 global variable 就知道多好用了吧XD
06/10 23:47, 9F

06/10 23:48, , 10F
可是我覺得singleton還複雜化了 orz
06/10 23:48, 10F

06/11 00:01, , 11F
singleton重點不是在global variable...
06/11 00:01, 11F

06/11 00:09, , 12F
可是很多人其實只要global的部份卻用了singleton
06/11 00:09, 12F

06/11 01:26, , 13F
第一段是 "Preserve Whole Object" 第二段是 "Proxy
06/11 01:26, 13F

06/11 01:27, , 14F
Pattern", 如果能用靜態多型相依性會更低
06/11 01:27, 14F
文章代碼(AID): #1Fr6yb95 (C_and_CPP)
討論串 (同標題文章)
本文引述了以下文章的的內容:
以下文章回應了本文
完整討論串 (本文為第 2 之 3 篇):
文章代碼(AID): #1Fr6yb95 (C_and_CPP)