iOS代码规范
Apple官方文档:文档
变量
- 1.类,协议使用大驼峰
HomeViewController.h
<TipsViewDelegate>
- 2.对象及局部变量使用小驼峰
NSString *personName = @"张三";
- 3.变量,属性的名称应包含功能与类型
UIButton *nameButton;
@property (nonatomic, strong) UIButton *nameButton;
宏
- 宏使用大写字母,用下划线‘_’分割单词。
#define HOME_PAGE @"";
- 2.宏定义中如果包含表达式或变量,表达式和变量应用小括号括起来。
#define MY_MIN(A, B) ((A)>(B)?(B):(A))
常量
- 1.单文件常量
static NSString * const kMsg = @”MSG”;
- 2.多个文件共享常量(通知等)
.h
extern NSString * const badgeNameNotification;
.m
static NSString * const badgeNameNotification = @"badgeNameNotification";
声明cell的重用字符
k + cell的名称 +identifier
比如: QYHomeItemTableViewCell的标识符
kQYHomeItemTableViewCellIdentifier
枚举
枚举规则:枚举名同类名规则,加项目前缀,大驼峰命名;
枚举值去掉前缀,大驼峰命名
typedef NS_ENUM(NSInteger, QYHomeControllerSelectType) {
HomeControllerSelectTypeOne,
HomeControllerSelectTypeTwo,
};
方法
- 1.普通方法的命名
方法使用小驼峰法命名。
能反应出这个方法是什么含义。
执行性的方法应该以动词开头。
返回性的方法应该以返回的内容开头。
- (void)replaceObjectAtIndex:(NSUInteger)index withObject:(id)object;
- (NSString *)stringWithString:(NSString *)string;
- 2.Delegate方法的命名
类的实例应为回调方法的参数之一;
回调方法的参数只有类本身的情况,方法名要符合实际含义;
以类的名字开头(如果回调方法有两个以上参数的情况);
-(NSInteger)tableView:(UITableView*)tableView numberOfRowsInSection:(NSInteger)section;
-(NSInteger)numberOfSectionsInTableView:(UITableView*)tableView;
在类.m中根据不同功能代码来进行分类:
#pragma mark - Initialization
#pragma mark - LifeCycle
#pragma mark - override
#pragma mark - Actions
#pragma mark - Delegates
#pragma mark - Public
#pragma mark - Private
#pragma mark - Getter & Setter
CGRect函数
推荐: 可读性比较高
CGRect frame = self.view.frame;
CGFloat x = CGRectGetMinX(frame);
CGFloat y = CGRectGetMinY(frame);
CGFloat width = CGRectGetWidth(frame);
CGFloat height = CGRectGetHeight(frame);
不推荐:
CGRect frame = self.view.frame;
CGFloat x = frame.origin.x;
CGFloat y = frame.origin.y;
CGFloat width = frame.size.width;
CGFloat height = frame.size.height;
注释
方法注释:方法外部用option + command + /,方法内部用//注释。
/**
改变原始文本
@param originalString 原始文本
*/
- (NSString *)changeStringWithOriginalString:(NSString *)originalString {
//输入的原始文本
}
属性,模型注释
///设备代码串
@property (nonatomic, copy) NSString *deviceCodeString;
持续更新。
网友评论