版权声明:本文为博主原创文章,未经博主允许不得转载。转载请注明转至Z.MJun的简书
1. 每一行的字数限制
- 80个字数限制
- xcode设置 屏幕左上角Xode->Perference->Text Editing->"Page guide at column: 80" 打上勾
- 每一行的代码尽量不要超出80个字的长度,超出的回车排版, 方法名的冒号对齐
2. 命名规范
驼峰式命名
-
类命名
- 首字母大写,每个单词首字母大写
- 尽量使用能够反映类功能的名词短语
-
eg:
UserManage ,UserData
等
-
特殊类命名
-
控件类型直接使用尾端的驼峰单词
eg:
UIView -> xxxView
UViewController -> xxxViewController
UIButton -> xxxButton
UILabel -> xxxLabel
UIImageView -> xxxImageView
UITableView -> xxxTableView
UITableViewCell -> xxxCell
UIAlertView -> xxxAlertView
UIScrollView -> xxxScrollView
以下类名过长,取中间的单词作为尾端
UIActivityIndicatorView -> xxxActivity
UIPickerView -> xxxPicker
UIProgressView -> xxxPorgress
-
分类(类别)命名
- 与类命名相同,此外需添加要扩展的类名"+"
eg:NSString+Login UIView+XIB
等
- 与类命名相同,此外需添加要扩展的类名"+"
-
协议(委托)命名
- 与类命名相同,此外需添加“Delegate”后缀
eg:UserManager 对应 UserManagerDelegate
- 与类命名相同,此外需添加“Delegate”后缀
-
方法命名
- 首字母小写,之后每个单词首字母都大写
- 方法名使用动词短语
- 如果该方式对内部使用的在前面加 "_"
- 如果该方法对外使用不需要加“_”
eg:- (void) _loadData:(NSData *)data
重点说明
1.“-” 号后面有个空格
2.“(void)” 右面有一个空格
3.传递参数的类型如果是指针,类与*号之间有空格
-
方法参数命名
- 首字母小写,之后每个单词首字母都大写
- 具有足够的说明性
- 不需要添加类型前缀
-
eg:
- (void) setUserData:(NSDictionary *)userInfo
-
变量命名
- 首字母小写,之后每个单词首字母都大写
- 具有足够的说明性
- 成员变量不需要添加“_m”前缀
- 成员变量添加“_”前缀
eg:NSMutableDictionary *_dataDic;
- 如果该变量是属性不需要添加“_”
eg:@property (nonatomic) NSDictionary *dataDic;
-
常量
- 常量(预定义,局部常量等)使用小写k开头的驼峰法
eg:#define kUpdateUserInfoNote @"kUpdateUserInfoNote"
- 枚举类型统一使用
typedef NS_ENUM(类型, 名称)
- 枚举的内容使用 名称小内容_
eg:
typedef NS_ENUM(NSInteger, Code) { Code_Success = 200, Code_Fail = 201, }
- 常量(预定义,局部常量等)使用小写k开头的驼峰法
-
IBAction 方法
- 如果是Button时间,方法名后缀使用Action,如果是内部使用,前面添加'_'
eg:- (IBAction)_popAction:(UIButton *)sender;
- 如果是Button时间,方法名后缀使用Action,如果是内部使用,前面添加'_'
-
图片命名
- 使用英文,全部小写,单词中间"_"隔开
- 添加UI模块名作为前缀,避免冲突
- 图片存放在
Images.xcassets
下
eg:bar_title icon_coin
-
注释
- 在注释的地方使用 //即可
- 文件下的方法区域分类,使用
#pragma mark -
,可以把在文件路径下的方法分类并标记
eg:#pragma mark - Http
- 宏 必须使用大写命名,"_"隔开
-
eg:
SCREEN_WIDTH_RIOT
-
eg:
3. 代码优化
- 避免相同的代码段在多个地方出现
相同的代码,必须归纳出来并且用一个类封装起来 - 语句嵌套层次不得超过3层,超出的必须抽取出中间函数
eg:for,while循环 if,do
等 - 及时删除或注释掉无用的代码
- 确定不使用的代码应该删除
4. 头文件.h 执行文件.m
-
.h文件
-
import "xxxx.h"
部分头文件时候,如果只是内部使用,请放在.m文件下,.h使用@class xxxx
声明该类即可 - 文件下有声明代理,把
@protocol
代理放在@interface
上面 - 代理方法必须包含该类名
eg:
@class ImageOperation;
@protocol ImageOperationDelegate<NSObject>
- (void) operation:(ImageOperation *)op didLoadImage:(UIImage *)image;
@end
@interface ImageOperation : NSOperation
@end
-
-
.m文件
-
@implementation ViewController
上方使用@interface ViewController() @end
- 如果文件中使用过
IBAction
的方法,并且外部不能使用,统一放在这里,并且前面加"_"。
eg:- (IBAction) _popAction:(UIButton *)sender;
- 使用部分代理,并且代理不被外部使用,请把他们都放在.m的
interface ()
下
eg:@interface ViewController () <UITableViewDataSource,UITableViewDelegate>
-
5.代码整体规范,系统函数放上面,自定义函数放下面
如常见的viewcontroller
- (void)viewDidLoad{}
- (void)viewDidAppear:(BOOL)animated{}
然后跟着的是Delegate,DataSource
//如UICollectionViewDelegate,UICollectionViewDataSource
- (NSInteger)collectionView:(UICollectionView *)view numberOfItemsInSection:(NSInteger)section{}
- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath{}
......
最后跟自己的方法
- (void) xxxXxxx{}
- 中间使用
#pragma mark-
分割,如Delegate,DataSource
和 自己的的方法
其他类如此类推
网友评论