美文网首页
iOS代码规范

iOS代码规范

作者: 风中尘埃飘过 | 来源:发表于2019-07-15 09:06 被阅读0次

    命名规范

    1.项目中所有的类都以项目简称做为前缀(例如LY)。
    2.项目中所有宏定义都以 小写字母 k 开头。
    3.Model的名称和字段的名称,尽量跟服务器统一。
    4.方法名不能使用get或者set开头。
    5.BOOL属性应加 is 前缀。 例如:

    @property (nonatomic, assign) BOOL isShow;
    
    

    6.类方法以类名开头。 例如:

    NSString stringWithFormat:<#(nonnull NSString *), ...#>
    
    

    7.类扩展的命名规范。 例如:

    #import "NSMutableURLRequest+LYExtension.h"
    
    类扩展的方法名最好以扩展名的前几个字母开头 + 下划线
    - (NSMutableURLRequest *)ly_authorizedURLRequest {
    
    }
    

    8.图片的命名规则 模块功能具体名字 例如 crm_customer_status
    9.枚举的命名规范,以类名开头。 例如:

    typedef NS_ENUM(NSUInteger, LYNewJumpType) {
        LYNewJumpTypeNone = 0,
        LYNewJumpTypeSystemMessage,
        LYNewJumpTypeAnnouncemnt,
        LYNewJumpTypeDiscussion,
        LYNewJumpTypeBusinessCall
    };
    

    10.给一个对象命名时建议采用修饰+类型的方式,如果是数组则用单词复数表示。 例如:

    UILabel *nameLabel; //name + label
    NSMutableArray *scores;
    

    书写规范

    1.方法名的书写规范 - + 空格 + 返回值 + 方法名 + 空格 + {}。 例如:

    - (void)loadSubViews {
    
    }
    

    2.带参数的方法名书写规范 后面的参数名都是小写 并且子参数名跟方法名一样(age:(NSInteger)age 例如:

    - (void)initWithName:(NSString *)name age:(NSInteger)age {
    
    }
    
    

    3.对象的类型和基础类型的书写规范 例如:

    NSString *name = @"小明";
    NSInteger age = 12;
    BOOL isShow = YES;
    

    4.判断的书写规范,关键字 + 空格 + 判断条件 + 空格 + {} 例如:

    if (YES) {
    
    }
    else if (YES) {
    
    }
    else {
    
    }
    

    5.属性的书写规范,关键字 + 空格 + 修饰符 + 空格 + 类型 + 空格 + 属性名。 例如:

    @property (nonatomic, strong) NSMutableDictionary *clue;
    
    

    6.写代码时,逗号后面都用空格隔开。而 : 的前后都要用空格隔开。 例如:

    <UITableViewDelegate, UITableViewDataSource, LYRegionSelectViewDelegate, LYAttachmentsViewControllerDelegate>
    
    [NSString stringWithFormat:@"【%@】%@-%@", startAt, self.flowEventModel.orderTitle, self.flowEventModel.flowTitle];
    
    NSDictionary *params = @{
                             @"uuid" : uuid ?: @"",
                             @"name" : objKey,
                            };
    
    

    7.严格遵守项目中 100 的换行线。
    8.不可变数组和字典的书写方法,每个元素都换行。 例如:

    NSDictionary *params = @{
                             @"uuid" : uuid ?: @"",
                             @"name" : objKey,
                             @"mime" : mimeType,
                             @"size" : @(data.length),
                             @"bizType" : @(bizType)
                            };
    
    NSArray *statuses2 = @[
                           @"全部状态",
                           @"待分派",
                           @"进行中",
                           @"待确认完成",
                           @"已完成",
                           @"意外终止"
                          ];
    

    9.运算符的书写规范,运算符和元素之间用空格隔开。例如:

    a + b = c;
    a ++;
    a / b = c;
    a % b = c;
    

    10.关于判断的书写规范 例如:

    BOOL isShow = NO;
    if (isShow) {
    
    }
    不推荐用下面几种写法:
    if (isShow == YES) {
    
    }
    
    if (isShow == nil) {
    
    }
    
    

    11.对象的比较不推荐使用 == ,应使用系统提供的方法进行比较。 例如:

    [a isEqualToString:c];
    不推荐直接使用 a == c 进行判断
    

    12.三元运算符的使用如下:

    a ?: @""
    a ? b : @""
    

    13.在知道数组元素类型情况下,请标明数组中元素的类型。

    NSMutableArray <NSObject *> *arr;
    

    14.复杂的判断条件,尽量每一个条件写一行。例如:

    if (job.JobState == JobState.New
        || job.JobState == JobState.Submitted
        || job.JobState == JobState.Expired
        || (job.JobTitle && job.JobTitle.length)) {
    
    }
    

    代码规范

    1.项目中发现没有用的代码或者文件,请直接删除。
    2.多用#pragma mark - xxx把方法分组,#pragma mark与下面的代码之前不要空行。
    3.项目中出现警告,尽量消除警告。
    4.项目中多使用枚举,不要使用常量。
    5.在类扩展里面,不要重新类的方法。这样会带来意想不到的错误。
    6.单个的方法最好不要超过100行,如果超过请对方法内容进行拆分。
    7.每一个类的实现文件最好不要超过800行,超过了,可考虑对该文件进行重构。
    8.如果一个常量只有在这个类中使用到,可用static修饰。例如:

    static const NSTimeInterval kAnimationDuration = 0.3;
    

    9.在.h文件,减少暴露在外的方法或者属性。
    10.属性修饰符 字符串必须用copy。
    11.对象的初始化方法。尽量使用懒加载。(建议把懒加载的方法写在最后,这样我们可以直接把重点放在业务逻辑上)。
    12.项目中尽量少的使用tag。
    13.如果项目中的工具类,不能满足你的需求,请使用的继承的方式解决。尽量不要随意修改公共类。
    14.使用block的时候,请检查是否循环引用的问题。
    15.每个类里面的dealloc方法,写在最上面。这样便于检查该类是否正常释放。
    16.尽量把重复的代码,封装成一个方法。如果要修改这个方法的时候只需要修改一个地方即可。
    17.书写代理方法的时候,代理的方法名要表明这个代理方法是做了什么事情。例如:- (void)tableView:didSelectRowAtIndexPath:
    18.不要使用new方法来初始化对象。
    19.公共类的接口要设计的简洁,满足核心的功能就好了。不要设计很少会被用到,但是参数极其复杂的 API 。如果要定义复杂的方法,使用类别或者类扩展。
    20.尽量不要在.h文件那么导入其他的头文件。
    21.点语法常用来访问属性,不要用点语法来调方法。
    22.使用window的时候,通过下面的方式获取:

    正确的写法:
    [UIApplication sharedApplication].keyWindow.rootViewController
    错误的写法:
    self.window.rootViewController  因为程序可能不止一个window,self.window可能不是主窗口
    

    23.建议加载xib,xib名称用NSStringFromClass(),避免书写错误。

    // 推荐写法
     [self.tableView registerNib:[UINib nibWithNibName:NSStringFromClass([DXRecommendTagVCell class]) bundle:nil] forCellReuseIdentifier:ID];
    // 不推荐写法
     [self.tableView registerNib:[UINib nibWithNibName:@"DXRecommendTagVCell" bundle:nil] forCellReuseIdentifier:ID];
    

    注意事项:

    1.统一使用驼峰命名。
    2.方法名的可读性高,避免命名冲突。
    3.逻辑比较复杂的代码,一定要写注释。
    4.封装的控件一定要写清楚注释。最好能有一个使用说明或者是使用案例。
    5.公共的控件最好遵循单一职责原则。
    6.项目中如果出现修改公共控件,先考虑会影响的范围。然后在跟相关人员协商后修改。
    7.完成一个迭代版本的需求后,抽出时间来检查新增的类是否存在内存泄漏。
    8.完成一个迭代版本的需求后,及时的整理本次迭代的文件(删除不要的文件,把新增的文件归类)

    相关文章

      网友评论

          本文标题:iOS代码规范

          本文链接:https://www.haomeiwen.com/subject/rrlgkctx.html