代碼規(guī)范基本上都是從蘋果原生示例代碼中總結出來的, 大家可以多查看蘋果示例代碼進行學習.
駝峰命名法
OC提倡自注釋命名方式,即通過多個單詞組合成一個有含義的類名,變量名或者方法名.為了方便區(qū)分單詞,采用單詞首字母大寫的方式.* 類名所有單詞首字母都要大寫* 變量名第一個單詞首字母小寫* 方法名采用動賓結構,也就是'動詞'+'名詞'的形式;第一個單詞首字母小寫例如:用戶信息類: @interface UserInfo: NSObject{ //用戶名變量 NSString *_userName //用戶學生編號 int _userStudentCount;} //創(chuàng)建用戶名方法: - (void)createUserName;@end
空格的使用方式
聲明變量時,指針符號*
與變量名無間隔,與類名有一個空格間隔
形式上是 類名 *變量名- NSString *user = @"";- NSArray *userList = @"";
使用,
, ;
時, 與前方單詞無間隔,后面加一個空格
形式上是'單詞, '- @interface UserInfo: NSObject{} @end- @[@"11", @"22", @"33", @"44"];- @{@"userName": @"美玲", @"sex": @"女", @"age": @22};- NSLog(@"%@", userList);- for(int i = 0; i < 9; i++){}
三目運算符
條件語句 ? 真值 : 假值;NSString *category = age <= 18 ? @"小孩" : @"成年人";為變量做非空處理NSString *aStr = nil;aStr = aStr ?: @"";代碼作用是判斷aStr是否為nil如果是nil,那么賦值為@""; 否則什么都不做
運算符=, ==, +, -, *, /, %, +=, -=, *=, /=, %=
前后加空格
- a += 4;* int c = b + 2;* NSString name = @"美玲"; if(i == 5){}
自增自減
i++; i--; --i; ++i; 變量和運算符之間無空格for(int i = 0; i < 9; i++){}
方法的聲明
對象方法或者類方法的+
, -
號后面加空格
- (void)createUser;+ (id)userWithType;
單例方法
通常以'standard', 'default', 'main', 'shared', 'current'單詞開頭+ (UIApplication *)sharedApplication+ (UIScreen *)mainScreen; + (UIDevice *)currentDevice;+ (NSUserDefaults *)standardUserDefaults;+ (NSFileManager *)defaultManager;
類工廠方法
通常以類名開頭+ (instancetype)buttonWithType:(UIButtonType)buttonType;+ (instancetype)stringWithString:(NSString *)string;
關系詞
'At', 'From', 'To', 'With', 'By'- (unichar)characterAtIndex:(NSUInteger)index;- (NSString *)substringFromIndex:(NSUInteger)from;- (NSString *)substringToIndex:(NSUInteger)to;- (NSString *)substringWithRange:(NSRange)range;- (NSString *)stringByAppendingString:(NSString *)aString;
多參數方法, 除第一個參數,其他參數名通常不帶有關系詞
- (NSRange)rangeOfString:(NSString *)searchString options:(NSStringCompareOptions)mask range:(NSRange)searchRange;
屬性的聲明
@property后面加空格@property (nonatomic, readonly) UITableViewStyle style;
常量的定義
代碼中盡量不要出現字符串或者數字, 因為后期維護時不方便.習慣上通過把字符串, 數字聲明為常量, 做到常量的統(tǒng)一管理.常量定義的方式有以下兩種:#define 宏定義static const 靜態(tài)常量不管聲明哪種類型的常量,變量名都需要添加'k'開頭,這樣可以有效防止命名沖突問題具體使用時:聲明對象類型的常量時, 習慣使用:static NSString *const kCellIdentify = @"CellName";聲明基礎類型常量時, 習慣使用:#define kDuration 30
代碼分段#pragma mark -
在代碼中通常使用'#pragma mark - '來對代碼進行分段,方便后期維護.例如@implementation ViewController#pragma 懶加載- (UITableView *)someTable{return nil;}- (UIButton *)someBtn{return nil;}#pragma mark - UITableViewDataSource 表格數據- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{return 0;}- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{return nil;}#pragma mark - UITableViewDelegate 表格代理- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{}#pragma mark - 生命周期- (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typically from a nib.}- (void)viewWillAppear:(BOOL)animated{ [super viewWillAppear:animated];}- (void)viewWillDisappear:(BOOL)animated{ [super viewWillDisappear:animated];}- (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; // Dispose of any resources that can be recreated.}@end
成員變量的聲明
成員變量要使用'_'進行標示@interface UserInfo: NSObject{ NSString *userName; //成員變量添加下劃線}@end
協(xié)議的使用
協(xié)議的聲明要跟’#import’關鍵詞之間隔一行以上,否則沒有代碼提示
import <UIKit/UIKit.h> @protocol ViewControllerDelegate <NSObject>@end@interface ViewController : UIViewController@property (nonatomic, weak) id<UITableViewDelegate> delegate;@end
協(xié)議變量要使用weak修飾
@property (nonatomic, weak) id<UITableViewDelegate> delegate;
構造方法的返回值選擇instancetype
- (instancetype)init- (instancetype)initWithCoder:(NSCoder *)aDecoder+ (instancetype)string;+ (instancetype)stringWithString:(NSString *)string;
原文鏈接:http://blog.csdn.net/jiyingxin/article/details/50448258