iOS

iOS开发:代码规范

2018-06-08  本文已影响33人  Jason_hzb

一、注释规范

iOS注释主要分为以下几种:属性注释、方法集注释、方法注释、普通注释(单行注释)、类注释。

1、属性注释

/** 日租 */
@property (nonatomic, strong) XLGDayRentVC *dayRentVC;

好处:
1、使用时可以提示注解(此方法只有头文件中属性/方法的注解才会提示);
2、可以使用[Option + 单击]查看注解;
3、可以使用AppleDoc生成开发注释文档;

使用时提示注解.png
使用[Option + 单击]查看注解.png

2、方法集注释

#pragma mark - methods

/**
 返回事件
 */
- (void)navigationLeftButton {
    [AppDelegate.nav popViewControllerAnimated:YES];
}

好处:
1、类的层级分明;
2、快速定位具体功能;

方法集注释.png

3、方法注释

Xcode8以后注释快捷键:[Command + Option + /]

/**
 计算两个数的和
 
 @param number1 加数1
 @param number2 加数2
 @return 相加结果
 */
- (NSInteger)sumWithNumber1:(NSInteger)number1 number2:(NSInteger)number2;

4、普通注释

使用场景:代码片段里面

普通注释.png

5、代码块快捷注释

mark注释代码块.png

好处:代码块通过快捷键引用,方便快速;

6、类注释

//
//  XLGDayRentVC.h
//  SharenGo
//  Notes:首页日租页面
//
//  Created by Jason_zyl on 2018/9/19.
//  Copyright © 2018年 小灵狗出行. All rights reserved.
//

7、要求

1、按照上面注释规范写代码;
2、重要的属性、方法一定要写注释;
3、代码注释开发人员互相检查;

二、代码规范

1、命名规范

所有命名采用英文规范命名,不能用中文拼音
  1. 类命名,大驼峰式命名
    • 前缀要求
      a. 重要类文件需要加 XLG 前缀
    • 后缀要求
      a. ViewController 使用 VC 后缀
      b. View 使用 View 后缀
      c. UITableViewCell 使用 Cell 后缀
      d. Protocol 使用 Delegate 后缀
      e. NSArray/ NSMutableArray 使用 Arr 后缀
      f. UIImageView 使用 ImgView 后缀
      g. UILabel 使用 Lab 后缀
      h. NSDictionary/NSMutableDictionary 使用 Dic 后缀
  2. 属性命名,小驼峰式命名,必须包含 功能 与 类型
    例如:UILable *nameLab; //姓名
  3. 宏命名, 全部大写,单词用_分隔
  4. Enum命名,与类命名一致,里面枚举内容的命名需要以该Enum类型名称开头,同时绑定枚举数据类型
枚举.png

2、代码格式

  1. " * " 指针靠近变量
  2. 方法声明, - + 和 返回值之间留一个空格, 方法名和第一个参数之间不留空格
  3. Method 和 Method 之间 空一行
  4. 用 #pragma mark - 对 Method 进行功能分组
  5. 不允许超过三行空白
  6. 头文件导入, h文件尽量用@class声明,m文件import引入, 以下两种需h文件import
    a. 继承的父类
    b. 实现某个protocol
  7. 代码尽量写成代码段,每一段代码实现独立的功能(创建UI,网络请求,实现方法,代理)
  8. 参数过多或过长时,参数换行,冒号对齐
  9. 方法的大括号和其他的大括号(if/else/switch/while)始终和声明在同一行开始,新一行结束
  10. 每个类代码控制在1000行以内

3、文件存放规范

4、消除编译警告和内存泄露

5、工具类统一管理,公共资源统一存放

6、要求

1、按照上面代码规范书写代码;
3、开发人员定期进行代码Review;

三、图片命名规范

1、基本规范

2、命名规则

类别_ 模块_ 属性描述_ 状态+倍图+.+文件类型
命名的名称要对图片的类型和使用范围已经状态特征有一个清晰的含义,好的命名应该有自解释性,不会产生歧义,不能出现资源名称重复。
例如:
btn_wifi_search_white_nor@2x.png

a.类别(必选)
类别是按照资源类型划分为以下几个类别
img - 比较大的图片,例如首页Banner占位图,启动图
btn - 一般用于按钮的背景图
icon - 小的图标或者按钮上的图标
例如:
img_home_default_banner@3x.png

b.模块(可选)
模块为通用模块时,不需要,属于具体某个模块时需要,可以按功能区分也可以按某个界面区分(eg:wifi,sim,home,payment,booking)。
例如:
icon_arrow_right_white_nor@2x.png
icon_wifi_search_result_filter@2x.png
icon_payment_pay_type_alipay@2x.png

c.属性描述(必选)
详细描述该资源的其他特征,按照从抽象后具体的范围,资源的颜色,名称,箭头的方向都属于此类。
例如:
icon_review_placeholder_avatar@2x.png

d.状态(可选)
当给按钮的资源命名时用到,使用简写
nor (normal: 一般状态)
def (default: 默认状态)
sel (selected:选中状态)
hig (highlight:高亮状态)
dis (disabled:不可用状态)

e.倍图(必选)
使用@2x或者@3x,不推荐使用1x图
禁止以下用法:
icon_payment_pay_type_alipay.png
f.文件类型(必选)
使用小写,例如png,jpg,git,svg等

3、要求

1、按照上面图片命名规范命名图片;
2、为了保证iOS&Android图片命名的一致性,统一采用UI人员给的切图名字命名【前提:UI人员图片命名遵守这套规范】
3、图片命名开发人员互相检查;

四、数据解析规范

1、使用

1、接口数据用Model接收,杜绝直接对数据进行读取;

// 字典转model
ConfirmOrderModel *confirmOrderModel = [ConfirmOrderModel mj_objectWithKeyValues:dic];
// 数组转model数组
NSArray *dataArr = [CouponModel mj_objectArrayWithKeyValuesArray:data[@"resultValue"]];

2、Model属性要有功能注释,有属性参考值的把参考值写上;

@interface StrategyModel : NSObject

/**
 * ID : 
 * imageUrl : 
 * name : 
 * desc : 
 * isSelected : 
 */
@property (nonatomic,copy) NSString *ID;         //ID
@property (nonatomic,copy) NSString *imageUrl;   //图片
@property (nonatomic,copy) NSString *name;       //名称
@property (nonatomic,copy) NSString *desc;       //描述
@property (nonatomic,assign) BOOL isSelected;    //是否选中
@property (nonatomic,retain) NSArray *skus;      //规格数组
@property (nonatomic,retain) NSArray *spec_info; //属性信息数组

@end

3、返回值替换

+ (NSDictionary *)replacedKeyFromPropertyName {
    return @{
             @"ID":@"id",
             };
}

4、model里面数组继续用model接收

+ (NSDictionary *)objectClassInArray {
    return @{@"skus":[GoodsSkusModel class],
             @"spec_info":[GoodsSpecInfoModel class],
             };
}

2、要求

1、按照上面数据解析规范解析数据;
2、数据解析方式统一,杜绝对数据直接取值处理,避免APP闪退;
3、数据解析开发人员互相检查;

上一篇下一篇

猜你喜欢

热点阅读