iOS命名

通用的約定


盡可能遵守 Apple 的命名約定芹啥,尤其是和 內(nèi)存管理規(guī)則 (NARC) 相關(guān)的地方绩鸣。
推薦使用長(zhǎng)的鼎文、描述性的方法和變量名。
推薦:

UIButton *settingsButton;

不推薦:

UIButton *setBut;

常量


常量應(yīng)該以駝峰法命名贬墩,并以相關(guān)類(lèi)名作為前綴榴嗅。
推薦:

static const NSTimeInterval ZOCSignInViewControllerFadeOutAnimationDuration = 0.4;

不推薦:

static const NSTimeInterval fadeOutTime = 0.4;

推薦使用常量來(lái)代替字符串字面值和數(shù)字,這樣能夠方便復(fù)用陶舞,而且可以快速修改而不需要查找和替換录肯。常量應(yīng)該用 static 聲明為靜態(tài)常量,而不要用 #define 吊说,除非它明確的作為一個(gè)宏來(lái)使用论咏。
推薦:

static NSString * const ZOCCacheControllerDidClearCacheNotification = @"ZOCCacheControllerDidClearCacheNotification";
static const CGFloat ZOCImageThumbnailHeight = 50.0f;

不推薦:

#define CompanyName @"Apple Inc."
#define magicNumber 42

常量應(yīng)該在頭文件中以這樣的形式暴露給外部:

extern NSString *const ZOCCacheControllerDidClearCacheNotification;

并在實(shí)現(xiàn)文件中為它賦值。
只有公有的常量才需要添加命名空間作為前綴颁井。盡管實(shí)現(xiàn)文件中私有常量的命名可以遵循另外一種模式厅贪,你仍舊可以遵循這個(gè)規(guī)則。

方法


方法名與方法類(lèi)型 (- /+ 符號(hào))之間應(yīng)該以空格間隔雅宾。方法段之間也應(yīng)該以空格間隔(以符合 Apple 風(fēng)格)养涮。參數(shù)前應(yīng)該總是有一個(gè)描述性的關(guān)鍵詞。
盡可能少用 "and" 這個(gè)詞眉抬。它不應(yīng)該用來(lái)闡明有多個(gè)參數(shù)贯吓,比如下面的 initWithWidth:height: 這個(gè)例子:
推薦:

- (void)setExampleText:(NSString *)text image:(UIImage *)image;
- (void)sendAction:(SEL)aSelector to:(id)anObject forAllCells:(BOOL)flag;
- (id)viewWithTag:(NSInteger)tag;
- (instancetype)initWithWidth:(CGFloat)width height:(CGFloat)height;

字面值


使用字面值來(lái)創(chuàng)建不可變的 NSString , NSDictionary , NSArray ,和 NSNumber 對(duì)象。注意不要將 nil 傳進(jìn) NSArray 和NSDictionary 里蜀变,因?yàn)檫@樣會(huì)導(dǎo)致崩潰悄谐。
例子:

NSArray *names = @[@"Brian", @"Matt", @"Chris", @"Alex", @"Steve", @"Paul"];
NSDictionary *productManagers = @{@"iPhone" : @"Kate", @"iPad" : @"Kamal", @"Mobile Web" : @"Bill"};
NSNumber *shouldUseLiterals = @YES;
NSNumber *buildingZIPCode = @10018;

不要這樣:

NSArray *names = [NSArray arrayWithObjects:@"Brian", @"Matt", @"Chris", @"Alex", @"Steve", @"Paul", nil];
NSDictionary *productManagers = [NSDictionary dictionaryWithObjectsAndKeys: @"Kate", @"iPhone", @"Kamal", @"iPad", @"Bill", @"Mobile Web", nil];
NSNumber *shouldUseLiterals = [NSNumber numberWithBool:YES];
NSNumber *buildingZIPCode = [NSNumber numberWithInteger:10018];

如果要用到這些類(lèi)的可變副本,我們推薦使用 NSMutableArray , NSMutableString 這樣的類(lèi)库北。
應(yīng)該避免下面這樣:

NSMutableArray *aMutableArray = [@[] mutableCopy];

上面這種書(shū)寫(xiě)方式的效率和可讀性的都存在問(wèn)題爬舰。
效率方面,一個(gè)不必要的不可變對(duì)象被創(chuàng)建后立馬被廢棄了寒瓦;雖然這并不會(huì)讓你的 App 變慢(除非這個(gè)方法被頻繁調(diào)用)情屹,但是確實(shí)沒(méi)必要為了少打幾個(gè)字而這樣做。

可讀性方面杂腰,存在兩個(gè)問(wèn)題:第一個(gè)問(wèn)題是當(dāng)你瀏覽代碼并看見(jiàn) @[] 的時(shí)候垃你,你首先聯(lián)想到的是 NSArray 實(shí)例,但是在這種情形下你需要停下來(lái)深思熟慮的檢查;另一個(gè)問(wèn)題是惜颇,一些新手以他的水平看到你的代碼后可能會(huì)對(duì)這是一個(gè)可變對(duì)象還是一個(gè)不可變對(duì)象產(chǎn)生分歧皆刺。他/她可能不熟悉可變拷貝構(gòu)造的含義(這并不是說(shuō)這個(gè)知識(shí)不重要)。當(dāng)然官还,不存在絕對(duì)的錯(cuò)誤芹橡,我們只是討論代碼的可用性(包括可讀性)毒坛。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末望伦,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子煎殷,更是在濱河造成了極大的恐慌屯伞,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,290評(píng)論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件豪直,死亡現(xiàn)場(chǎng)離奇詭異劣摇,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)弓乙,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,107評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門(mén)末融,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人暇韧,你說(shuō)我怎么就攤上這事勾习。” “怎么了懈玻?”我有些...
    開(kāi)封第一講書(shū)人閱讀 156,872評(píng)論 0 347
  • 文/不壞的土叔 我叫張陵巧婶,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我涂乌,道長(zhǎng)艺栈,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,415評(píng)論 1 283
  • 正文 為了忘掉前任湾盒,我火速辦了婚禮湿右,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘罚勾。我一直安慰自己诅需,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,453評(píng)論 6 385
  • 文/花漫 我一把揭開(kāi)白布荧库。 她就那樣靜靜地躺著堰塌,像睡著了一般。 火紅的嫁衣襯著肌膚如雪分衫。 梳的紋絲不亂的頭發(fā)上场刑,一...
    開(kāi)封第一講書(shū)人閱讀 49,784評(píng)論 1 290
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼牵现。 笑死铐懊,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的瞎疼。 我是一名探鬼主播科乎,決...
    沈念sama閱讀 38,927評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼贼急!你這毒婦竟也來(lái)了茅茂?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 37,691評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤太抓,失蹤者是張志新(化名)和其女友劉穎空闲,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體走敌,經(jīng)...
    沈念sama閱讀 44,137評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡碴倾,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,472評(píng)論 2 326
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了掉丽。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片跌榔。...
    茶點(diǎn)故事閱讀 38,622評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖捶障,靈堂內(nèi)的尸體忽然破棺而出僧须,到底是詐尸還是另有隱情,我是刑警寧澤残邀,帶...
    沈念sama閱讀 34,289評(píng)論 4 329
  • 正文 年R本政府宣布皆辽,位于F島的核電站,受9級(jí)特大地震影響芥挣,放射性物質(zhì)發(fā)生泄漏驱闷。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,887評(píng)論 3 312
  • 文/蒙蒙 一空免、第九天 我趴在偏房一處隱蔽的房頂上張望空另。 院中可真熱鬧,春花似錦蹋砚、人聲如沸扼菠。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,741評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)循榆。三九已至,卻和暖如春墨坚,著一層夾襖步出監(jiān)牢的瞬間秧饮,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,977評(píng)論 1 265
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留盗尸,地道東北人柑船。 一個(gè)月前我還...
    沈念sama閱讀 46,316評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像泼各,于是被迫代替她去往敵國(guó)和親鞍时。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,490評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容

  • 禪與 Objective-C 編程藝術(shù) (Zen and the Art of the Objective-C C...
    GrayLand閱讀 1,607評(píng)論 1 10
  • 為什么Objecive-C中的很多類(lèi)名都是NS開(kāi)頭的呢扣蜻? 我保證在你第一次給別人介紹Objective-C的時(shí)候肯...
    BairdWeng閱讀 4,621評(píng)論 0 2
  • 小駝峰命名法(CamelCase):第一個(gè)單詞小寫(xiě)字母開(kāi)頭逆巍,其他單詞首字母大寫(xiě);大駝峰命名法(PascalCase...
    Paco_Ke閱讀 682評(píng)論 2 0
  • 1. 前言: 命名規(guī)則對(duì)于維護(hù)代碼來(lái)說(shuō)是非常重要的,Objective-C方法名往往很長(zhǎng)弱贼,不過(guò)這也有好處蒸苇,可以更清...
    獨(dú)酌丿紅顏閱讀 6,432評(píng)論 2 19
  • 多年以前: 當(dāng)我們散步在同一個(gè)校園時(shí)磷蛹, 當(dāng)我們?cè)谕粋€(gè)球場(chǎng)上揮汗如雨時(shí)吮旅, 當(dāng)我們?cè)谕幻鎳?guó)旗下,對(duì)著校領(lǐng)導(dǎo)挑眉弄眼...
    宿時(shí)閱讀 215評(píng)論 1 1