ios开发编码规范


。值 使用 Objective-C 的方式来定义,并且命名按照驼峰命名法(首字母大写)。写上第一个默认 } CameraMode; CameraModeRight, CameraModeLeft, CameraModeFront, typedef enum : { 枚举不用 C 的定义方式: 4、 enum 命名 Category命名在 方法和类 的名字前加上前缀,防止与第三方的类别发生命名冲突。 3、Category 命名 常量应该用 static 来声明而不是用 #define ,如上面两个列子。 static NSString *const UIApplicationDidEnterBackgroundNotification NSString 或 NSDictionary 添加 const 关键字防止被修改。 static NSTimeInterval const kAnimationDuration = 0.3; 为了防止命名冲突,常量的命名在最前面添加一个 k 作为标记。 2、常量命名 NSString 、 NSDictionary 和 Block 用 copy 修饰, delegate 用 weak 修饰 . ۑ౮**ވ @property (nonatomic, assign, getter = isSuccess) BOOL success; //ฎ Bool 类型的添加上 getter (调用时更加的清晰): 变量用途进行解释。 变量命名用驼峰命名法,不用中文拼音命名(音调不准不确定的意思),要添加注释对 1、变量命名 命名规范 iOS开发编码规范 typedef NS_ENUM(NSInteger, EnumDemo) { EnumDemoA = 1, EnumDemoB, EnumDemoC }; 5、Protocol 命名 protocol 命名按照Apple官方写法来写: - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath: (NSIndexPath *)indexPath; “ 函数调⽤的可知性, 回调时被调⽤者要知道其调⽤者, ⽅便信息的传递, 所以建议在 回调⽅法中第⼀个参数中加上调⽤者 图片命名 图片命名应表明作用和状态,如: checkBox_normal 、 checkBox_selected 、 checkBox_highlight 等。 注释 1、代码组织 对类里的函数代码用 #pragma mark 进行分组,以ViewController为例: ;BOOL)testMethodWithParam:(NSString *)param1 param2:(NSString *)param2) - /* ۑ౮ވ * @return ᬬࢧฎ * * @param param2 ݇හ2 * @param param1 ݇හ1 * * ၥᦶොဩ /** #pragma mark ၥᦶොဩ 方法注释要注明方法的用途、参数解释、返回值解释,用来 VVDocumenter 添加注释。例如: 2、方法注释 #pragma mark - UITableViewDelegate #pragma mark - UITableViewDataSource #pragma mark - UITextFieldDelegate #pragma mark - Protocol conformance //դቘ - (void)privateMethod {} //ᐺํොဩ #pragma mark - Private - (void)publicMethod {} ොဩول// #pragma mark - Public - (IBAction)submitData:(id)sender {} //඙֢ #pragma mark - Actions - (id)customProperty {} - (void)setCustomProperty:(id)value {} //නં௔ጱgetter ޾ setter #pragma mark - getter setter - (void)didReceiveMemoryWarning {} - (void)viewWillAppear:(BOOL)animated {} - (void)viewDidLoad {} - (void)dealloc {} - (instancetype)init {} //නኞ޸ޮ๗ොဩ pragma mark - Lifecycle# 3、代码块注释 部分功能代码块需要添加注释表明这段代码的用途 其他 1、能使用字面量来创建和使用的都用字面量。 NSArray *names = @[@"Brian", @"Matt", @"Chris", @"Alex", @"Steve"]; NSDictionary *productManagers = @{@"iPhone" : @"Kate", @"iPad" : @"Kamal"}; NSNumber *shouldUseLiterals = @YES; NSNumber *buildingZIPCode = @10018; names[1]; productManagers[@"iPhone"]; 不用: NSArray *names = [NSArray arrayWithObjects:@"Brain", @"Matt", @"Chris", nil]; [names objectAtIndex:1]; NSDictionary *productManagers = [NSDictionary dictionaryWithObjectsAndKeys:@"Kate", @"iPhone", @"Kamal", @"iPad", nil]; NSLog(@"%@", [productManagers objectForKey:@"Kate"]); 2、嵌套判断 嵌套判断应一旦发现某个条件不符合,立即返回,条理更加的清晰。如下: if (!user.UserName) return NO; if (!user.Password) return NO; if (!user.Email) return NO; return YES; 而不是用: BOOL isValid = NO; if (user.UserName) { if (user.Password) { if (user.Email) isValid = YES; } } return isValid; Block循环引用 在 block 是 __NSMallocBlock__ 和 __NSStackBlock__ 时,使用 weakSelf 避免循环引 用 __weak typeof(self) weakSelf = self; dispatch_block_t block = ^{ [weakSelf doSomething]; // weakSelf != nil // preemption, weakSelf turned nil [weakSelf doSomethingElse]; // weakSelf == nil } xib使用 不要再xib上布局时,不要建xib文件。 精简公共方法和属性 尽量精简公开api接口和属性。无需公开的方法应为私有。 ViewController 中操作太多 ViewController 中的代码操作,应建立 Model 将 ViewController 中的 Model 操作放 到Model中;将 View 中的工作放到 View 中,对 ViewController 进行瘦身。
还剩4页未读

继续阅读

下载pdf到电脑,查找使用更方便

pdf的实际排版效果,会与网站的显示效果略有不同!!

需要 10 金币 [ 分享pdf获得金币 ] 0 人已下载

下载pdf

pdf贡献者

linli

贡献于2016-09-13

下载需要 10 金币 [金币充值 ]
亲,您也可以通过 分享原创pdf 来获得金币奖励!
下载pdf