OC规范

1.命名

1.1 类的命名

  • 含义清楚,尽量做到不需要注释也能了解其作用,若做不到,就加注释
  • 大驼峰式命名每个单词的首字母都采用大写字母
    • 例1:STDeviceModel
    • 例2:STUserInfoController ,Controller 建议省略View
    • 例3:STSetView
    • 例4:STUserCell,tableViewCell,建议省略tableView
    • Protocol: 使用Delegate或者DataSource作为后缀
    • UI控件依次类推

1.2 私有变量

  • 小驼峰式命名:第一个单词以小写字母开始,后面的单词的首字母全部大写
  • 例子: firstName、lastName
  • @property (nonatomic, copy) NSString *userName;请在,类明后面加一个空格符
  • 建议使用self.方式调用,统一风格

1.3 宏命名

  • 全部大写,单词间用 _分隔[不带参数]
    #define THIS_IS_AN_MACRO @"THIS_IS_AN_MACRO"

  • 字母k开头,后面遵循大驼峰命名[不带参数]
    #define kWidth self.frame.size.width

  • 小驼峰命名[带参数]
    #define getImageUrl(url) [NSURL URLWithString:[NSString stringWithFormat:@"%@%@",kBaseUrl,url]]

2.注释

  • 最好的代码是不需要注释的(夸张了) 尽量通过合理的命名
  • 良好的代码把含义表达清楚 在必要的地方添加注释
  • 注释需要与代码同步更新
  • 如果做不到命名尽量的见名知意的话,就可以适当的添加一些注释或者mark

2.1 属性注释,统一风格即可

//<方式一>
///设备名
@property (nonatomic, strong) UILabel *deviceNameLabel;

//<方式二>
@property (nonatomic, strong) UILabel *deviceNameLabel;//设备名

2.1 方法声明注释

  • 方法的作用,参数含义必须说清楚
/// 国标设备名称修改
/// @param param @{@"gbDeviceId":@"*", @"deviceName":@"*"}
  /// gbDeviceId  String  国标设备id  是
  /// deviceName  String  设备名称  是
/// @param block 网络请求成功的block
+ (void)modifyNameGB:(NSDictionary *)param fetchValueBlock:(FetchValueBlock)block;

3.UI布局

  • 新增的功能不允许使用Xib
  • 建议Mansory布局,允许少量的frame使用(固定样式的使用)
  • 老代码,请在空闲的整理,或删除Xib

4. 格式化代码

  • 代码书写 *, =, [, ],参考如下方
 UITableView *table = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStylePlain];
 table.dataSource = self;
 table.delegate = self;
 table.scrollEnabled = NO;
 table.separatorInset = UIEdgeInsetsMake(0, 0, 0, 0);
 [self.view addSubview:table];
  • 方法的声明和定义
    • - 、+ 和 返回值 之间留一个空格,一行显示不下,请在每个参数后换行
    • 调用多参数函数,一行显示不下,请在每个参数后换行。
//单行
- (UITableViewCell *)getCellWithTable:(UITableView *)tableView;

//多行
- (nullable NSURLSessionDataTask *)GET:(NSString *)URLString
             parameters:(nullable id)parameters
               headers:(nullable NSDictionary <NSString *, NSString *> *)headers
              progress:(nullable void (^)(NSProgress *downloadProgress))downloadProgress
               success:(nullable void (^)(NSURLSessionDataTask *task, id _Nullable responseObject))success
               failure:(nullable void (^)(NSURLSessionDataTask * _Nullable task, NSError *error))failure;
  • 方法的实现行数控制
    • 避免超长函数体,控制在一屏幕可以显示的下。显示不下,按逻辑块拆分
    • 控制函数单一职责,即叶子函数
    • 单个文件代码行数控制在1000行以内,超出抽取工具类分类
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 前言 本文是作者参考自己的部分代码规范和网上众多其它小伙伴的代码规范,整理和写出的。规范涵盖了很多内容,阅读的小伙...
    iOS_林亦辰阅读 1,839评论 0 5
  • 代码格式 使用空格而不是制表符 Tab 不要在工程里使用 Tab 键,使用空格来进行缩进。在 Xcode > Pr...
    small_Sun阅读 1,394评论 1 3
  • Objective-C Coding Guidelines In Chinese Objective-C编码规范,...
    爨乡的云阅读 535评论 0 0
  • 一、命名规范 1、通用命名规范 Tips:所有的命名都应该遵循3个基本原则,即“清晰性”、“一致性”、“不要自我指...
    德惟阅读 310评论 0 0
  • 转载自:『博爱』 Objective-C-Coding-Guidelines-In-Chinese 概要 Obje...
    王_尧阅读 1,223评论 0 2