编程风格
1)不要使用new创建对象,使用 alloc init方法创建对象:
错误写法:
NSObject *obj = [NSObject new];
正确写法:
NSObject *obj = [[NSObject alloc] init];
2)Header file中,尽量使用@class代替#import
错误写法:
#import <UIKit/UIKit.h>
#import "HoriSipDoorGroupRecord.h"
@interface HoriMultiLockView : UIView
- (instancetype)initWithFrame:(CGRect)frame
sipDoorGroupRecord:(HoriSipDoorGroupRecord *)sipDoorGroupRecord;
@end
正确写法:
#import <UIKit/UIKit.h>
@class HoriSipDoorGroupRecord;
@interface HoriMultiLockView : UIView
- (instancetype)initWithFrame:(CGRect)frame
sipDoorGroupRecord:(HoriSipDoorGroupRecord *)sipDoorGroupRecord;
@end
3)BOOL在Objective-C中被定义成signed char类型,也就是说BOOL类型的变量不仅仅可以表示YES(1)和NO(0)两个值,所以不要将BOOL类型变量直接和YES比较:
错误写法:
BOOL adult = [self judgementAge];
// 无法确定|adult|的值是否为YES(1),不要将BOOL直接与YES比较
if (YES == adult) {
}
// 不要将其他类型转化成BOOL返回
- (BOOL)isAdult {
return [self personAge];
}
正确写法:
BOOL adult = [self judgementAge];
if (adult) {
// code
}
- (BOOL)isAdult {
return ([self personAge] >= 18) ? YES : NO;
}
// 正确,逻辑操作符可以直接转化为BOOL
- (BOOL)isValid {
return [self stringValue] != nil;
}
- (BOOL)isEnabled {
return [self isValid] && [self isBold];
}
4)对象的nil检查,不要使用nil == objc进行判断,直接使用objc:
错误写法:
if (nil == objc) {
}
正确写法:
if (!objc) {
}
5)做逻辑判断时,把用来判断的值写在左边,被判断的值写在右边:
错误:
// 用来判断的HoriAppOpenTypeNetworkingOpenDoor应该写在左侧,被判断的self.appOpenType写在右侧
if (self.appOpenType == HoriAppOpenTypeNetworking) {
}
正确写法:
if (HoriAppOpenTypeNetworking == self.appOpenType) {
}
6)宏定义的合理使用
随着业务的不断变化,可能有些业务代码暂时不需要,但考虑到后面的需求又可能加上,这里最好使用宏定义暂时屏蔽不需要的业务代码:
#ifdef HoriManuallyBindingAndUnbundProperty
// 业务代码
#endif