天天看點

iOS書寫代碼規範

本文出自作者的教育訓練機構北京千鋒教育

1. 目的

  1. 1.1  統一程式設計規範,讓學員在學習過程中遇到講師更替,不用重新适應一套

    新的程式設計習慣;

  2. 1.2  使學員養成良好的代碼習慣;
  3. 1.3  為了更加有效地開發和維護内部項目,更加有效地積累代碼庫。
  1. 原則隻遵循蘋果公司釋出代碼中主流的代碼風格。
  2. 命名規範
    1. 3.1  變量、類名、函數名使用波浪式命名法,即碰到一個新的單詞則使用大
      寫字母開頭,盡量使用完整的單詞命名,不采用縮寫的單詞命名;
            
    2. 3.2  基本不使用 C/C++語言所提倡的匈牙利命名法;
    3. 3.3  Cocos2D-­‐X中的C++采用微軟匈牙利命名法;
    4. 3.4  類名使用大寫字母打頭,最好加上項目名稱縮寫作為字首,如:

      QFWebView,其中 QF 是千鋒的漢語拼音首字母;

    5. 3.5  類的成員變量,使用下劃線打頭,如:_age;
    6. 3.6  加方法和減方法的方法名一律以小寫字母打頭,如:createTableView;
    7. 3.7  臨時變量和函數參數以小寫字母打頭;
    8. 3.8  const常量使用小寫字母k打頭;

4. 書寫規範

  1. 4.1  屬性的聲明和實作,必須嚴格使用@property 和@synthesize 一一對應,

    @synthesize 必須指定對應的成員變量,禁止使用預設生成的成員變量;

    也就是禁止@synthesize age 這種寫法,要這樣寫@synthesize age = _age;

  2. 4.2  成員變量一律寫在@interface 内部,禁止在@implementation 後加大括
    号,内部聲明成員變量;禁止如下的操作:
          

    @implementation RootViewController {int _age;

    }

    @end

  3. 4.3  盡量使用宏定義 RELEASE_SAFELY 和 RETAIN_SAFELY 取代 NSObject 内的減方法 release 和 retain,RELEASE_SAFELY 和 RETAIN_SAFELY 的實作分别為:

    #define RELEASE_SAFELY(_obj) do { [_obj release]; _obj = nil; }while (0)

    #define RETAIN_SAFELY(_receiver, _assigner) do { id __assigner =_assigner; if (__assigner != _receiver) { [_receiver release];_receiver = [__assigner retain]; } } while (0)

  1. 4.4  臨時變量的聲明,必須指派初始化,如:

    NSInteger x = 0;

  2. 4.5  聲明多個臨時變量,必須另起一行,禁止如下寫法:

    NSInteger x = 0, y = 0;

  3. 4.6  臨時變量的聲明語句寫完後,必須隔行開始書寫邏輯代碼,邏輯代碼中可以穿插臨時變量的聲明語句,同樣必須隔行書寫,如:

    NSString *midLocalURL = [[g_pLCLog docDir]

stringByAppendingPathComponent:[NSString stringWithFormat:@"%@,%d",fileID, [g_pModel midPhotoSize]]];

if ([g_pFileMgr fileExistsAtPath:midLocalURL]) {CHECKB([g_pFileMgr removeItemAtPath:midLocalURL error:nil]);

}

UIImage *midImage = [image resizedImage:CGSizeMake([g_pModelmidPhotoSize], [g_pModel midPhotoSize])interpolationQuality:kCGInterpolationDefault];

NSData *midData = UIImageJPEGRepresentation(midImage,kImageCompressionQuality);

CHECKB([midData writeToFile:midLocalURL atomically:YES]);

  1. 4.7  遇到新的代碼塊,必須隔行書寫,包括函數的實作、if、switch 分支語句、while、do...while、for 循環語句等,例如:

    NSString *channelID = [g_pModel channelID];

    if ([channelID length] == 0) {channelID = @"iTunes";

    }

    [label setText:LCString(@"TEST_VERSION")];

  2. 4.8  所有的二進制運算符,以空格隔開,如 x += 12; 不應寫成 x+=12;
  3. 4.9  所有的逗号後都要追加一個空格,如:CGRectMake(1, 3, 5, 7);

4.10指針的聲明,*寫在變量前,類名和*之間用空格隔開,禁止寫成 C/C++提倡的寫法:NSObject* obj = nil;應寫成 NSObject *obj = nil;

4.11 盡量使用 NSInteger 取代 int、使用 NSUInteger 取代 unsigned int;4.12 代碼的注釋應寫在對應代碼的上方或右邊,禁止将注釋寫在對應代碼的

下方;