2017-04-19 59 views

回答

2

沒有對存儲器的任何影響。代碼無論如何都鏈接到您的可執行文件中,並且不會影響對象的大小。你應該根據最清潔的設計做出決定。

結構中的函數聽起來像一個壞主意,除非函數與宿主結構相關。

靜態類方法對於想要組合在一起的相關函數可能很有用。這種方法還具有「命名」你的函數名稱的優點,所以你可以避免命名衝突。

全局函數適用於真正具有全局範圍的函數,並且不會自然地與其他函數分組,但您需要小心地命名它們以避免衝突。

0

類/結構體/枚舉中的靜態函數與全局函數之間的區別僅僅是在呼叫站點上必須跳過的環節之間的區別。例如:

class Foo { 
    static func bar() { } 
} 

func foo_bar() { } 

// call the first 
Foo.bar() 
// call the second 
foo_bar() 

恕我直言的類不是名稱空間,應該用作名稱空間。這就是命名空間的用途。

0

差異應該可以忽略不計。你不應該使用類作爲名稱空間。

我發佈這個答案,儘管有完全有效的答案已經可用。我想強調的一點是,在實際遇到問題之前,您不應該對任何優化問題感到困擾。以下是Donald Knuth的相關報價:

「程序員浪費大量時間來思考或擔心程序中非關鍵部分的速度,而這些效率方面的嘗試實際上在調試時會產生強烈的負面影響,我們應該忘記小效率,大約97%的時間:不成熟的優化是萬惡之源,但我們不應該在這個關鍵的3%中放棄我們的機會。「

雖然在你的情況下不太可能有任何嚴重的問題,不管你是這樣做還是那樣:)