Feng's Notes

周海锋的个人博客

0%

iOS代码规范

iOS 开发规范

命名规范

统一要求

  • 尽量使用英文命名,同一个含义的不出现多个不同的单词
  • 命名才用驼峰命名法

    类名采用大驼峰(UpperCamelCase)
    类成员、方法小驼峰(lowerCamelCase)
    局部变量大小写首选小驼峰

视图命名

  • ViewController 不要采用VC这样的缩写,统一简化为Controller
  • UIView 级别的组件不要以 Controller 或 Displayer 结尾,如果起到管理作用可以使用 control 结尾
  • 大模块中的View 带上模块缩写 例如: MeiPai -> MPXXXView

协议命名

  • 好的协议名应能立刻让人分辨出这不是一个类名,除了以常用的 Delegate、DateSource 做结尾外

通知命名

基本命名格式是:[与通知相关的类名] + [Did | Will] + [UniquePartOfName] + Notification

NSApplicationDidBecomeActiveNotification
NSWindowDidMiniaturizeNotification
NSTextViewDidChangeSelectionNotification

临时变量命名

  • 临时变量可以写得很短,如 i、k、vc 这样;
  • 临时变量可以使用匈牙利前缀,但数据类型不可以作为前缀:

    // OK
    wCell, vcMaster, vToolbar
    // 糟糕,数据类型作为前缀
    bool_switchState, floatBoxHeight

缩写

可以使用广泛使用的缩写,如 URL、JSON,并且缩写要大写。但像将download简写为dl这种是不可以的。

// OK
URL,JSON, Password,  Animate
// 糟糕
Url, json,  psw,   anim
destinationSelection       
// OK
destSel                    
// 糟糕
setBackgroundColor:        
// OK
setBkgdColor:              
// 糟糕

代码格式

常量

常量定义示例:

  • 常量字符串

    NSString *const
    // 头文件
    extern ushort APIFetchPageSizeDefault; // 无const,可在外部修改

枚举

  • 采用Objective-C 规范的枚举
    typedef NS_ENUM(NSUInteger, DeviceType) {
    kDeviceTypeiOS,
    kDeviceTypeAndroid,
    kDeviceTypeUnkown
    }

空格

  • 类方法声明在方法类型与返回类型之间要有空格。
    // 糟糕
    -(void)methodName:(NSString *)string; 
    // OK
    - (void)methodName:(NSString *)string;
    // 条件判断的括号内侧不应有空格。
    
    // 糟糕
    if ( a < b ) {
    // something
    }
    
    // OK
    if (a < b) {
    // something
    }
    // 关系运算符(如 >=、!=)和逻辑运算符(如 &&、||)两边要有空格。
    
    // OK
    (someValue > 100) ? YES : NO
    
    // OK
    (items)?: @[]

花括号

  • 方法开始,if, for 等的花括号不要另起一行
    - (void)methodName:(NSString *)string {
    ↑空格                      ↑空格    ↑空格,花括号不要另起一行
    if (xxxx) {
    空格↑      ↑空格,花括号不要另起一行
    } else {
    空格↑   ↑空格,花括号不要另起一行
    }    
    }

    注释

变量注释

/** 应用ID */
@property (nonatomic, copy) NSString *appid;

方法注释

/** 设置UI */
- (void)setupUI;

/** 
* 设置UI 
* @params animate 是否带动画
*/
- (void)setupUI:(BOOL)animate;

文件组织

Config

存放基础配置信息,定义常用开发宏,和变量的地方

Common

常用的方法,扩展,类别、帮助类

Datas

统一管理 全局对象、数据存储,数据统计的地方

Network

我们采用集约式的Api请求方式,所有的Api请求都通过调用Network的方法来获取回调。

Classes

Classes 主要业务放置的地方,里面再按照模块划分,模块下面再根据MVC进行分类

SDK

这个目录放第三方的SDK,如UMeng、WeiboSDK、WeixinSDK等等

Vendor

原则上第三方库优先采用 Cocoapods 形式引入。部分不提供Pod接入,或者是需要在第三方库基础上进行修改的,则采用源码方式接入,放置在Vendor目录下面。

Resources

声音图片,配置信息等放置在Resources中