B----自己
12-03。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
1:#### 关于#if和#ifdef的补充
因为之前项目中在判断调试代码时,很多地方都用#ifdef DEBUG(现已改为#if DEBUG),如果项目中需要加入调试代码时,请用#if来判断处理
- #if 会判断后面定义的宏是否为真
- #ifdef 只判断是否定义了这个宏,但不会关心该宏的真假
2:先查看工程有没有 在操作
3:gzz codeReview时先搜索🔍 gzz 并删除后提交
4:其他注释形式
// TODO: 等待实现
// FIX: 有bug,需要修改
// !!!: 逻辑混乱,需要完善
- (NSInteger)sumNumber:(NSInteger)firstNumber withNumber:(NSInteger)secondNumber;
常量以相关类名作为前缀
5:static const NSTimeInterval GJR_LOGIN_TIMEOUT = 30;
6:建议使用类型常量,不建议使用#define预处理命令
static NSString * const GJR_ORDER_TITLE = @"订单";
static const CGFloat GJR_ORDER_IMG_HEIGHT = 50.0f;
不推荐这样写:
#define Title @"订单"
#define ImgHeight 42
7:方法名中不应使用and,而且签名要与对应的参数名保持高度一致
推荐这样写:
- (instancetype)initWithWidth:(CGFloat)width height:(CGFloat)height;
不推荐这样写
- (instancetype)initWithWidth:(CGFloat)width andHeight:(CGFloat)height;
8:方法名前缀
推荐这样写:
- (void)init...//初始化 - (void)initViews 初始化UI
- (void)update...;//更新 - (void)updateData - (void)updateTitleFrame
- (void)do...Action;//点击事件 do+事件+Action - (void)doSubmitAction
- (void)load...; //请求数据
- (BOOL)is... //方法返回值为boolean型的请使用is前缀标识
- (UIView *)get... //返回某个值的方法,使用get为前缀标识
- (UIView *)set... //设置...
- (void)save... //保存数据
- (void)clear... //清除数据
- (NSString *)gjr_...;//分类中方法添加gjr_前缀
9:字面量语法
尽量使用字面量值来创建 NSString , NSDictionary , NSArray , NSNumber 这些不可变对象:
推荐这样写:数量多是对齐分行显示
NSArray *names = @[
@"Brian",
@"Matt",
@"Chris",
@"Alex",
@"Steve",
@"Paul"
];
NSDictionary *productManagers = @{
@"iPhone" : @"Kate",
@"iPad" : @"Kamal",
@"Mobile Web" : @"Bill"
};
10:枚举
所属类名(GJROrder)+枚举类别名(state)+类型(UnStart)
//订单任务类型
typedef NS_ENUM(NSUInteger, GJROrderState)
{
GJROrderStateUnStart = 0, //未开始
GJROrderStateProgress, //进行中
GJROrderStatecomplete //已完成
};