2014-06-13 27 views
18

在一個swift文件中創建多個類是否被認爲是差勁的技術,還是最好爲每個類創建一個單獨的swift文件?在一個.swift文件中創建多個類是否可以接受,還是應該爲每個類創建單獨的.swift文件?

例如,這是更好的:

A.多個類中ViewController.swift:

1. alpha.swift

class alpha: UIViewController { ... } 
class beta: UIWebView { ... } 
class gamma: UINavigationController { ... } 

B.獨立.swift文件對於每個類別:


1.在alpha.swift

class alpha: UIViewController { ... } 

2.在beta.swift

class beta: UIWebView { ... } 

3.在gamma.swift

class gamma: UINavigationController { ... } 

回答

10

這不是一個很差的技術,IF這些類已連接。

要確定它們是否連接,請詢問:一個類可以不使用另一個類嗎?

如果是,那麼你應該有兩個不同的文件,因爲你可能只需要使用兩個文件中的一個。


例如,在C++中,集合具有迭代器的內部類。 (我知道這是一個C++的例子,但問題不是真正的語言相關)。

雖然如果這兩個類沒有任何關係(在同一視圖中不計數),那麼它們應該各自擁有不同的類。

26

簡答題:它取決於

龍答:
如果你有小類,強烈綁定在一起,這是正確的把在同一個文件。
如果你有很長的,無關的類,那麼你最好把它們放在不同的文件中。

+0

簡短和完美的答案。雖然上面的答案也很好。 – iAnurag

4

對於這個問題,基於最近幾天在互聯網上痛苦的調試和搜索,我有不同的答案。我是擁有超過15年經驗的C++開發人員。來自這種語言,我很熟悉一些需要protected訪問的設計技術。由於Swift不支持它,事實證明他們不會在不久的將來支持它,所以我開始使用private訪問並在同一個文件中寫入很少的類。這樣,我已經解決了缺少的protected修飾符(私有函數在同一個文件中是可見的,所以它們對於同一個文件中的所有類都是可見的,並且如果這些類是派生類,private實際上是作爲受保護的)。那麼一切都很好,我很高興,然後發現我的應用程序崩潰與EXC_BAD_ACCESS代碼= 1 ...異常不是因爲我的代碼,這是因爲它的成員的佈局是某種程度上錯誤。例如,如果我通過實例變量從派生類調用一個函數a(),func b()被調用。 b()也是同一個類的成員,並且在a()之前定義。這就是爲什麼一些函數拋出訪問異常的原因。實例指針已損壞。在將所有3個類移至獨立文件後,所有內容都很正常。

不確定這是真正的原因還是我做了錯誤的事情,但是當您在同一個文件中定義多個類時,並非100%的情況都會使用定義的行爲。可能是編譯器問題,Swift是年輕的語言,甚至我正在用Gold Master studio進行測試,該工作室應該是穩定的,但仍然有很多bug。

相關問題