ios開發編寫規範總結

對於一個IT團隊來說,代碼的規範性是至關重要的,如果你的碼友看你的代碼比較費勁,那你就需要自省了。本人蔘考(蘋果官方推薦的代碼編寫規範性)和(pjk1129的博客),總結了以下幾點,僅供參考。


命名

命名規則對於維護代碼來說是非常重要的,。Objective-C方法名往往很長,不過這也有好處,讓很多註釋變得毫無意義。
本文推薦駝峯法。
駝峯法分小駝峯法和大駝峯法。小駝峯法:除第一個單詞之外,其他單詞首字母大寫。大駝峯法相比小駝峯法,大駝峯法把第一個單詞的首字母也大寫了。

*1. 清晰
即清晰又簡潔是最好的了,但簡潔不如清晰重要。儘量不要使用單詞的簡寫,除了非常常用的簡寫以外,儘量使用單詞全稱。API的名稱不要有歧義,一看你的API就知道是以什麼方式做了什麼事情,不要讓人有疑問。

*2.類命名
類名(不包括類別和協議名)應該用大寫開頭的大駝峯命名法。類名中應該包含一個或多個名詞來說明這個類(或者類的對象)是做什麼的。

在應用級別的代碼裏,儘量不要使用帶前綴的類名,每個類都有相同的前綴不能提高可讀性。不過如果是編寫多個應用間的共享代碼,前綴就是可接受並推薦的做法了(型如 JKPhotoBrowser ),注:儘量不要使用自己名字全拼的首字母來作爲前綴。

示例1:

@interface ImageBrowseView :UIView

@end

示例2:(帶前綴JK)

@interface JKPhotoBrowser :UIView

@end

*3.類別命名
類名+標識+擴展(UIImageView +MY+Web)

例:如果我們想要創建一個基於UIImageView 的類別用於網絡請求圖片,我們應該把類別

放到名字是UIImageView+HPWeb.h的文件裏。UIImageView爲要擴展的類名,MY爲專屬標識,Web爲擴展的功能。

類別的方法應該都使用一個前綴(型如my_myCategoryMethodOnAString ),以防止Objective-C代碼在單名空間裏衝突。如果代碼本來就不考慮共享或在不同的地址空間(address-space),方法命名規則就沒必要恪守了。

類別MYWeb頭文件,UIImageView+MYWeb.h如下:

@interface UIImageView (MYWeb)

-(void)my_setImageWithURLString:(NSString *)urlStr;

@end

*4.方法命名
方法使用小駝峯法命名, 一個規範的方法讀起來應該像一句完整的話,讀過之後便知函數的作用。執行性的方法應該以動詞開頭,小寫字母開頭,返回性的方法應該以返回的內容開頭,但之前不要加get。

示例:
-(void)replaceObjectAtIndex:(NSUInteger)index withObject:(id)anObject;

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

如果有參數,函數名應該作爲第一個參數的提示信息,若有多個參數,在參數前也應該有

提示信息(一般不必加and)

一些經典的操作應該使用約定的動詞,如initWith,insert,remove,replace,add等等。

*5.變量命名
變量名使用小駝峯法, 使變量名儘量可以推測其用途屬性具有描述性。別一心想着少打幾個字母,讓你的代碼可以迅速被理解更加重要。

* *5.1類成員變量**
成員變量用小駝峯法命名並前綴下劃線,Objective-C 2.0,@property 和 @synthesize 提供了遵守命名規範的解決方法

示例:

@interface ViewController ()

@property (nonatomic,strong)NSMutableArray *dataArray;

@property (nonatomic,strong)UITableView *tableView;

@end

@implementation ViewController

@end

* *5.2一般變量命名**
示例:
NSMutableArray *ticketsArray = [NSMutableArray arrayWithCapacity:0];

NSInteger numCompletedConnections =3;

* *5.3常量命名**
常量(預定義,枚舉,局部常量等)使用小寫k開頭的駝峯法,比如kInvalidHandle , kWritePerm
示例:#define kRunAnnotationStartPointTitle @“起點”

typedef NS_ENUM (NSInteger,RunGoalTypeE){

kRunGoalTypeNone       = 0,    //無目標

kRunGoalTypeTime       = 1,    //以時間爲目標

kRunGoalTypeDistance   = 2,    //以距離爲目標

kRunGoalTypeCalori     = 3,    //以消耗卡路里爲目標

};

NSString *const kGroupInfoName =@”name”;

*6.圖片命名
原則:

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

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

備註:建議背景圖採用以bg作前綴,按鈕背景採用btn作前綴(不作強制要求,項目實際負責人根據團隊特點確定即可)

公共模塊命名示例:

導航條背影圖片:[email protected]
導航返回按鈕:[email protected][email protected]
標籤item背景:[email protected][email protected]

私有模塊命名示例:

uc——user center

用戶中心頭像默認圖:[email protected]

用戶中心頂部默認背景圖:[email protected]

用戶中心底部背景圖:[email protected]


總結:

1 下面所有規則對第三方類庫無約束
* 所有類、方法、屬性等命名,做到見名知意,採用駝峯式命名規則
* 根據資源類型或者所屬業務邏輯對項目資源進行分組,使得整個項目結構清晰明瞭
* 整個項目保持一種代碼書寫風格(這個風格由團隊商量來定),讓你的代碼變的優雅且簡單易懂!
2. 命名規範
* 所有類名稱以項目工程開頭命名,eg:“XP”、“ZJG”、“SZ”
* 針對不同視圖控制器,在末尾添加後綴,eg:

UIViewController 後綴添加“ViewController”
UIView 後綴添加“View”
UIButton 後綴添加“Button”
UILabel 後綴添加“Label”

. 單頁代碼最好控制在800行以內,每個方法最好不要超過100行,過多建議對代碼進行重構
4. 相同的邏輯方法定義避免在多個地方出現,儘量將公用的類、方法抽取出來
5. 刪除未被使用的代碼,不要大片註釋未被使用的代碼,確定代碼不會使用,要及時刪除
6. 刪除多餘的註釋
7. 刪除多餘的空行
8. 刪除未被使用的資源文件
9. 對其他項目中copy過來的代碼,根據具體需要更新代碼風格,及時刪除未被使用的代碼
10. 項目中所有Group或者文件名稱(圖片名字等),不要使用漢字命名,儘量使用英文命名,國內特有名詞可以使用拼音。
11. 項目中所有Group都需要在項目目錄中存在一個真實的目錄,Group中的文件與真實目錄中文件一一對應。12. 請在項目中寫必要代碼的註釋
12. 整體代碼風格需要統一
* 代碼後面的”{“ 不需要單獨佔用一行
* 邏輯運算符 與 代碼之前空一格
例:
if (you are a cool boy){
//do something
}
* “#pragma mark -” 與下面的代碼之前不要空行
* 遵循一般性的代碼規範
13. 請多使用 #pragma mark - Mark Name 對方法進行分組 eg:
* #pragma mark - View lifeCycle
* #pragma mark - View lifeTerm
* #pragma mark - Init methods
* #pragma mark - Action methods
* #pragma mark - Common methods
* #pragma mark - UIActionSheetDelegate
* #pragma mark - UIImagePickerControllerDelegate
* #pragma mark - UITableViewDelegate Methods
* #pragma mark - UITableViewDataSource Methods
* #pragma mark - UIScrollViewDelegate Methods
* #pragma mark - UITextFieldDelegate Methods
* #pragma mark - UITextViewDelegate Methods

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章