• Objective-C开发编码规范


    针对自己的编码检查问题,改正为以下编码规范:

    1.

    协议( Protocols )

    在书写协议的时候注意用 <> 括起来的协议和类型名之间是没有空格的,比如 IPCConnectHandler(), 这个规则适用所有书写协议的地方,包括函数声明、类声明、实例变量等等:

    2.

    闭包( Blocks )

    根据 block 的长度,有不同的书写规则:

    • 较短的 block 可以写在一行内。

    • 如果分行显示的话, block 的右括号 } 应该和调用 block 那行代码的第一个非空字符对齐。

    • block 内的代码采用 4 个空格 的缩进。

    • 如果 block 过于庞大,应该单独声明成一个变量来使用。

    • ^ 和 ( 之间, ^ 和 { 之间都没有空格,参数列表的右括号 ) 和 { 之间有一个空格。

    3.

    字典

    构造字典时,字典的 Key 和 Value 与中间的冒号 : 都要留有一个空格,多行书写时,也可以将 Value 对齐:

    // 正确,冒号 ':' 前后留有一个空格
    NSDictionary *option1 = @{
    NSFontAttributeName : [NSFont fontWithName:@"Helvetica-Bold" size:12],
    NSForegroundColorAttributeName : fontColor
    };
     
    4.
    命名问题
    1>
    命名应该尽可能的清晰和简洁,但在 Objective-C 中,清晰比简洁更重要。由于 Xcode 强大的自动补全功能,我们不必担心名称过长的问题。

    不要使用单词的简写,拼写出完整的单词:

    2>一致性

    整个工程的命名风格要保持一致性,最好和苹果 SDK 的代码保持统一。不同类中完成相似功能的方法应该叫一样的名字,比如我们总是用 count 来返回集合的个数,不能在 A 类中使用 count 而在 B 类中使用 getNumber 。

     5.
    实例变量

    命名实例变量,在变量名前加上 _ 前缀(有些有历史的代码会将 _ 放在后面 ),其它和命名属性一样:

     
    @implementation MyClass {
    BOOL _showsTitle;
    }
     
    6.

    命名常量( Constants )

    如果要定义一组相关的常量,尽量使用枚举类型( enumerations ),枚举类型的命名规则和函数的命名规则相同:

    // 定义一个枚举,注意带有 `_` 的名称是不会被使用的
    typedef enum _NSMatrixMode {
    NSRadioModeMatrix = 0,
    NSHighlightModeMatrix = 1,
    NSListModeMatrix = 2,
    NSTrackModeMatrix = 3
    } NSMatrixMode;
     
    7.
    定义常量
     
    使用 const 定义浮点型或者单个的整数型常量,如果要定义一组相关的整数常量,应该优先使用枚举。常量的命名规范和函数相同:
    const float NSLightGray;
     
    8.
    宏定义
     
    不要使用 #define 宏来定义常量,如果是整型常量,尽量使用枚举,浮点型常量,使用 const 定义。 #define 通常用来给编译器决定是否编译某块代码.
     
    9.

    命名通知( Notifications )

    通知常用于在模块间传递消息,所以通知要尽可能地表示出发生的事件,通知的命名范式是:

     
    [ 触发通知的类名 ] + [Did | Will] + [ 动作 ] + Notification
     
    10.
    注释
    定义在头文件里的接口方法、属性必须要有注释!
    // 注释(注意空格问题)
     
    11.

    BOOL 的使用

    BOOL 在 Objective-C 中被定义为 signed char 类型,这意味着一个 BOOL 类型的变量不仅仅可以表示 YES(1) 和 NO(0) 两个值,所以永远不要将 BOOL 类型变量直接和 YES 比较;

    同样的,也不要将其它类型的值作为 BOOL 来返回,这种情况下, BOOL 变量只会取值的最后一个字节来赋值,这样很可能会取到 0 ( NO )。但是,一些逻辑操作符比如 &&,||,! 的返回是可以直接赋给 BOOL 的;

    另外 BOOL 类型可以和 _Bool,bool 相互转化,但是不能和 Boolean 转化。  (啥意思,暂时还没懂,知道的告诉我哟!!!)

    12.

    Delegate 要使用弱引用

    一个类的 Delegate 对象通常还引用着类本身,这样很容易造成引用循环的问题,所以类的 Delegate 属性要设置为弱引用。

    13.

    代码中注意大量的输出语句,没必要;

    定义方法以空行隔开;

    代码中注意大量的空行,注意代码的紧凑性;

    注意封装,代码的硬编码问题;

    宏定义注意全部大写,值用()括起来.

    暂时总结以上几点,也欢迎大神们指教!!

  • 相关阅读:
    中文词频统计及词云制作
    字符串操作练习:星座、凯撒密码、99乘法表、词频统计预处理
    python第二节课
    Python第一节课
    了解大数据
    pcb结构定义
    一个完整的大作业
    中文词频统计及词云制作
    字符串操作练习:星座、凯撒密码、99乘法表、词频统计预处理
    Python输入输出练习
  • 原文地址:https://www.cnblogs.com/pengsi/p/5549317.html
Copyright © 2020-2023  润新知