iOS開發(OC)中的命名規范


       開小差:最近發現自己有一個經驗主義的毛病,不太容易接受新的知識,這對從事技術研發的人來說不太合理,需要改之。

  正文:通過讀寫大量代碼我有自己的一套編程思路和習慣,自認為自己的編碼習慣還是不錯的,代碼結構也算清晰,因為我一直以來都是代碼看的多寫的多,但是總結的比較少,知識經常不成體系。以后多花點時間把自己的經驗和學習知識加以總結一下吧,這樣有利於去指導新人,也更有利於加深自己的知識認知。今天就從代碼規范入手總結一下iOS開發中好的編碼規范吧。我們在開發中看別人的代碼的時候經常會去抱怨至少內心里罵娘,其實別人看你的代碼也許也在抱怨你,我更深刻的意識到:高手和新手有代碼規范水平的差異,高手與高手之間有變成思想的差異,新手之間就在模仿中就更加凌亂了。因此團隊開發一定要有很好的且統一的編碼規范,這樣才有利於團隊開發與快速維護。今天先寫第一篇:《iOS開發(OC)中的命名規范》

命名原則

1.一般性原則:可讀性高(簡潔且清晰)和防止命名沖突(通過加前綴來保證)。

  Objective-C 的命名通常都比較長, 名稱遵循駝峰式命名法. 一個好的命名標准很簡單, 就是做到在開發者一看到名字時, 就能夠懂得它的含義和使用方法. 另外, 每個模塊都要加上自己的前綴, 前綴在編程接口中非常重要, 可以區分軟件的功能范疇並防止不同文件或者類之間命名發生沖突, 比如相冊模塊(PhotoGallery)的代碼都以PG作為前綴: PGAlbumViewController, PGDataManager.

代碼

點評

insertObject:atIndex:

Good

insert:at:

不清晰;要插⼊什么?“at”表⽰示什么?

removeObjectAtIndex:

Good

removeObject:

不錯,因為⽅法是⽤用來移除作為參數的對象

remove:

不清晰;要移除什么?

2.一致性

盡可能與Cocoa編程接⼝命名保持一致。如果你不太確定某個命名的⼀致性,請瀏覽頭文件或參考文檔中的范例,在使⽤多態方法的類中,命名的⼀致性⾮常重要。在不同類中實現相同功能的⽅法應該具有同的名稱。

代碼 點評
– (NSInteger)tag 在 NSView, NSCell, NSControl 中有定義
– (void)setStringValue:(NSString *) 在許多 Cocoa classes 中都有定義

 

文件的命名

文件的擴展名應該如下:

.h C/C++/Objective-C 的頭文件
.m Ojbective-C 實現文件
.mm Ojbective-C++ 的實現文件
.cc 純 C++ 的實現文件
.c 純 C 的實現文件

類別的文件名應該包含被擴展的類名,如:GTMNSString+Utils.h 或``GTMNSTextView+Autocomplete.h``。

類的命名

類名(以及類別、協議名)應首字母大寫,並以駝峰格式分割單詞。

1.類的前綴

1)所有類名、枚舉、結構、protocol定義時最好加一個統一的標示符,可以是項目縮寫,或者個人項目的名稱縮寫,例如都加上全大寫的Hoo(我的姓氏)作為前綴

2)根據功能模塊可以在給功能模塊的類添加功能模塊的名稱前綴,如用戶中心的profileViewController.可以命名為HooUCProfileViewController.

2.類的后綴

所有protocol定義時,都加上后綴Delegate 。如,HooRefreshViewDelegate,表示RefreshView的協議;

所有的控制器都加上Controller,所有的通知名都加上Notification。

 類別命名

類名+標識+擴展(UIImageView +HP+Web

例:如果我們想要創建一個基於UIImageView 的類別用於網絡請求圖片,我們應該把類別放到名字是UIImageView+HPWeb.h的文件里。UIImageView為要擴展的類名,HP為專屬標識,Web為擴展的功能。

方法命名

方法名應遵守小駝峰原則,首字母小寫,其他單詞首字母大寫,每個空格分割的名稱以動詞開頭。執行性的方法應該以動詞開頭,小寫字母開頭,返回性的方法應該以返回的內容開頭,但之前不要加get。

如:

- (void)insertModel:(id)model atIndex:(NSUInteger)atIndex;

- (instancetype)arrayWithArray:(NSArray *)array;

  

枚舉的命名

正宗的iOS開發者當然要以Objective-C的方式命名枚舉,如:

typedef NS_ENUM(NSInteger, UIViewAnimationTransition) {
    UIViewAnimationTransitionNone,
    UIViewAnimationTransitionFlipFromLeft,
    UIViewAnimationTransitionFlipFromRight,
    UIViewAnimationTransitionCurlUp,
    UIViewAnimationTransitionCurlDown,
};

  

屬性、變量命名

變量名使用小駝峰法, 使變量名盡量可以推測其用途屬性具有描述性。別一心想着少打幾個字母,讓你的代碼可以迅速被理解更加重要。每個屬性命名都加上類型后綴,如,按鈕就加上Button后綴,模型就加上Model后綴。

@property (nonatomic, strong) UIButton *submitButton;

1)類成員變量名

  成員變量用小駝峰法命名並前綴下划線,如:UIButton *_submitButton;

2)局部變量名

  遵守小駝峰命名規則,如:NSInteger numCompletedConnections =3;

const常量

以小寫k開頭,后面單詞首字母大寫,其余小寫。如:

const float kMaxHeigt = 100.0f;

如果是特殊含義的常量也建議加上后綴,如通知加上Notification為后綴,如:

extern Nsstring * Const kLoginSuccessNotification

資源文件命名 (圖片,本地化文件)

這個圖片資源命名方式,以功能為組織形式,是一個很好的習慣,有利於查看資源文件。

原則:

1)采用單詞全拼,或者大家公認無岐義的縮寫(比如:nav,bg,btn等)

2)采用“模塊+功能”命名法,模塊分為公共模塊、私有模塊。公共模塊主要包括統一的背景,導航條,標簽,公共的按鈕背景,公共的默認圖等等;私有模塊主要根據app的業務功能模塊划分,比如用戶中心,消息中心等。

例如用戶中心用戶頭像圖片的命名可以為:uc_imageview_user_icon

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM