命名清晰性 一致性
t_string (t在这里表示temp)
关键字: to for on with in
1.属性定义:
BOOL类型的属性,需要为其getter方法带is前缀。getter方法放在内存管理限定符前面,比如:@property (nonatomic, readonly, getter=isEditable, assign) BOOL editable;
2.实例变量名
下划线开头 比如: _orderLimitsArray
3.公共方法
写一些公共方法时,请尽量使用内联函数或者全局函数而不是宏定义
-
Tips:
-
函数不通过对象调用,所以不会走OC的消息转发流程,效率远高于方法调用;而且函数会有返回值和参数类型以及参数检查,而这些都是宏定义没有的。
-
正例: UIKIT_STATIC_INLINE NSString * kNSStringFromInteger(NSInteger a) { return [NSString stringWithFormat:@"%zd", a]; }
-
反例: #define kNSStringFromInteger(a) [NSString stringWithFormat:@"%zd", a]
4.私有方法名
私有方法p_开头?
共有方法_开头?
5.全局变量
私有常量
.m文件
static const NSTimeInterval kAnimationDuration = 0.3;
static NSString *const kErrorMessage = @“ErrorMessage”;
公开常量 在声明公开常量时,也可以使用FOUNDATION_EXPORT替换extern。
.h文件
extern NSTimeInterval WSFPersonModelAnimationDuration;
extern NSString *WSFPersonModelErrorMessage;
.m文件
NSTimeInterval WSFPersonModelAnimationDuration = 0.3;
NSString *WSFPersonModelErrorMessage = @“ErrorMessage”;
6.协议名
代理协议:类名+Delegate。比如:WSFOrderListChangedDelegate。
数据源协议:类名+DataSource。比如:WSFOrderListDataSource。
普通协议:类名+Protocol。比如:WSFOrderListVCProtocol。
7.通知
- 以Notification为后缀
- 宏定义
- #define URL_GAIN_QUOTE_LIST @"/v1/quote/list"
- #define kHomePageDidScroll @"com.xq.home.page.tableview.did.scroll"
8.其他:
头文件中尽量少引用其他头文件,尽量使用@class向前声明,每次引入其他头文件时问问自己是否必须要这样做
[ 建议 ] 尽量不要使用load类方法,如果必须要使用不能在方法内实现复杂逻辑或堵塞线程
[ 建议 ] 尽量减少继承,类的继承尽量不要超过3层,必要时刻可以考虑用分类、协议来代替继承。
UI控件建议使用weak修饰而不是strong修饰。 ??????
addObject****之前要非空判断
禁止在代码中直接写死字符串资源,必须要用字符串ID替代
#pragma mark - Life Cycle
#pragma mark - OverRide
#pragma mark - Intial Methods
#pragma mark - Target Methods
#pragma mark - UITextFieldDelegate
#pragma mark - Setter Getter Methods
#pragma mark - Lazy Load