美文网首页
IOS 开发规范文档

IOS 开发规范文档

作者: ZMJun | 来源:发表于2016-08-21 17:52 被阅读856次

    版权声明:本文为博主原创文章,未经博主允许不得转载。转载请注明转至Z.MJun的简书


    1. 每一行的字数限制

    • 80个字数限制
    • xcode设置 屏幕左上角Xode->Perference->Text Editing->"Page guide at column: 80" 打上勾
    • 每一行的代码尽量不要超出80个字的长度,超出的回车排版, 方法名的冒号对齐

    2. 命名规范

    驼峰式命名

    • 类命名

      • 首字母大写,每个单词首字母大写
      • 尽量使用能够反映类功能的名词短语
      • eg: UserManage ,UserData
    • 特殊类命名

      • UIKit里的UI界面部分

      • 控件类型直接使用尾端的驼峰单词
        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
    • 方法命名

      • 首字母小写,之后每个单词首字母都大写
      • 方法名使用动词短语
      • 如果该方式对内部使用的在前面加 "_"
      • 如果该方法对外使用不需要加“_”
        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, }
    • IBAction 方法

      • 如果是Button时间,方法名后缀使用Action,如果是内部使用,前面添加'_'
        eg:- (IBAction)_popAction:(UIButton *)sender;
    • 图片命名

      • 使用英文,全部小写,单词中间"_"隔开
      • 添加UI模块名作为前缀,避免冲突
      • 图片存放在 Images.xcassets
        eg: bar_title icon_coin
    • 注释

      • 在注释的地方使用 //即可
      • 文件下的方法区域分类,使用#pragma mark -,可以把在文件路径下的方法分类并标记
        eg:#pragma mark - Http
    • 必须使用大写命名,"_"隔开
      • eg:SCREEN_WIDTH_RIOT

    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 和 自己的的方法

    其他类如此类推

    相关文章

      网友评论

          本文标题:IOS 开发规范文档

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