2011-03-25 28 views
8

我近來一直在做很多iPhone開發,而且我有一個命名問題,我無法想到一個好的解決方案。問題在於,我不得不在變量,名稱空間或類名稱中引用「iOS」。我應該怎麼做?假設我有一個專爲iOS設計的「MyClass」版本。我應該叫它:如何在代碼中命名與iOS相關的元素?

iOS MyClass?

這很糟糕。班級名稱應該以大寫字母開頭。

IOSMyClass?

這很糟糕。現在我的課堂看起來像一個界面。

AppleMyClass?

這樣比較好,但是如果我爲Mac創建一個類的版本呢?

AppleMobileMyClass?

這樣更好,但它開始變得非常冗長。

有什麼想法?我正在使用C#開發桌面軟件。

回答

7

建議去你的第二選擇,但略微修改:IosMyClass。考慮3字母首字母縮略詞的慣例是Pascal(即MVC System.Web.Mvc)。當然,蘋果公司在實施時將其翻轉爲iOS。但是,這聽起來好像是用於.NET空間,並且希望遵循其慣例。

有一些其他類(in the .NET Framework even),以字母I開頭。不可否認,這並不理想,因爲它與I的前綴接口慣例非常接近。但是,接口以兩個大寫字母(I [A-Z])開頭。這將其標識爲界面。所以IosMyClass,按照慣例,不是一個接口,但IIosFoo會。

+0

有趣。確實有很多以'I'開頭的.NET類,它看起來很自然。另一方面,「Ios」看起來很奇怪,但我認爲這是迄今爲止我見過的最好的想法。 – 2011-03-25 15:51:23

4

我知道你在這裏指定C#作爲你的語言,但我想我應該指出標準的Objective-C命名約定,你會看到其他的iOS代碼。

Objective-C缺少命名空間的概念,所以它是generally recommended,您用2-3個大寫字母來表示您的類名稱,這意味着您的公司或框架可避免命名衝突。最近Apple推薦使用3個字符,因爲使用2個字母的Core Plot等框架已經開始與Apple框架中的私有類發生衝突(例如CPImage)。關於另一個命名指南,請參閱see here

因此,我建議不要使用通用的iOS前綴,因爲Apple可能會在內部使用它來導致應用程序中斷。無可否認,我不知道MonoTouch C#類如何與Cocoa框架類進行交互,但我想避免出現像這樣的問題。同樣,如果我可能指向Core Plot框架,那麼該框架中有一些代碼是特定於Mac的,一些是針對iOS的,但是單獨的類不用於每個平臺。特定於平臺的方法從主類文件中提取並放入類別中。這些類別具有相同的名稱,但Mac目標使用一個文件進行編譯,iOS目標使用另一個文件。類似地,針對每個平臺的整個類都被賦予相同的名稱和界面,但放入不同的文件中。編譯時使用哪個文件由平臺目標確定。

因此,我建議不要給iOS特定的類一個獨特的名稱,除非他們在您的其他目標平臺上沒有模擬。

相關問題