2013-05-08 34 views
2

在另一個類的相同.h/.m文件中定義類別是否是一種很好的做法?我知道它的構建沒有錯誤,並且與分開定義的完全一樣。在另一個類的相同.h/.m文件中定義一個類別

我想這樣做的主要原因是因爲我正在開發一個開源的控件,我希望它只有一個.h/.m文件。

+0

壞主意你在想什麼。爲每個類別創建單獨的文件 – 2013-05-08 10:48:28

回答

3

一般來說,將多個類和類別合併到同一個頭/實現中的最大問題是可搜索性受損。當一個類與另一個類一起存在於一個文件中時,文件名將不再反映頭/實現包含其他類的事實,這使得其他人難以找到你的類。

但是,如果您的項目很小且獨立,那麼可搜索性就不是一個問題。當只有一個文件要搜索時,每個特定代碼的位置都不存在問題:它全部位於該文件中。這聽起來像是你的項目既小又獨立,所以如果你想要這樣的話,將所有代碼放在單個源文件中看起來沒有問題。

另一種方法是將每個類和類別放在一個單獨的頭文件/實現文件對中,然後定義一個包含它們的頭文件。這可以讓你保持一個理想的項目組織,並讓你的用戶包括一個頭來使用你的組件。

+0

+1我會補充一點,如果有語義上的局部性,這也更有意義。例如。如果類別很小並且與主類直接相關,並且這對於類的消費者來說是顯而易見的,那麼比起將不相關的定義放在一起以避免額外文件更合理。 – 2013-05-08 11:00:34

+0

我的項目確實很小且獨立。你們兩個說的都有道理,所以我會繼續前進,並將這個類別包含在同一個文件中。謝謝 :) – 2013-05-08 12:43:20

1

如果你只在一個地方需要這個類別,我會說.m文件中的類別並不差。

顯然,如果你需要在多個地方這一類,你絕對應該移動到它自己的文件:慣例是用這種方式來命名:

BaseClass+categoryName.{h,m} 

如:

NSString+reverseString.h 
NSString+reverseString.m 
+0

我也是:如果擴展名僅用於本地,我(有時)將其放在需要它的類的.m中。 – 2013-05-08 11:08:15

相關問題