美文网首页
编写高质量的代码:改善Objective-C程序的61个建议(读

编写高质量的代码:改善Objective-C程序的61个建议(读

作者: bc3d3e66fba3 | 来源:发表于2016-11-23 22:39 被阅读30次

            继上一篇的读书笔记之后,这几天都没有更新,工作比较忙,一直在加班,今天我心情不错,下班后没有头疼、头大的感觉。所以就来了兴致,把我这几天抽空看的给记录一下。大概看了一下,有十一条左右,没事,姐们今天精力多着呢!😄😄😄

    建议3:尽量使用const、enum来替换预处理#define

            #define定义了一个宏,在编译开始之前就会被替换。const只是对变量进行修饰,当视图去修改该变量时,编译器会报错。在一些场合里你只能用#define,而不能用const.const在编译和调试的时候比#define更友好。而对于一个整型常量,可以使用枚举(enum),它兼有#define和const的所有优点,但是只能用在整型常量上。

             相对字符串字面量或数字,更推荐使用常量,应使用static方式声明常量,而非使用#define的方式来定义宏。例如:

    static NSString * const LiveViewController = @"Home Live";

    static const CGFloat ImageViewHeight = 50.0;

            对于整型类型,使用enum.推荐使用最新的fixed underlying type规范的NS_ENUM和NS_OPITION宏,它们基于C语言的枚举,保留了C语言的简洁和简单的特色。使用NS_ENUM宏定义枚举如下:

    typedef NS_ENUM(NSInteger,UITableViewCellStyle){

    UITableViewCellStyleDefault,

    UITableViewCellStyleValue1,

    UITableViewCellStyleValue2,

    UITableViewCellStyleSubtitle

    };

    通过使用NS_OPTION宏定义了一组可以组合在一起的位掩码值,如下:

    typedef NS_OPTION(NSInteger,UIViewAutoresizing){

    UIViewAutoresizingNono                                 =0,

    UIViewAutoresizingFlexibleLeftMargin          = 1 << 0,

    UIViewAutoresizingFlexibleWidth,                  = 1 << 1,

    UIViewAutoresizingFlexibleRightMargin,       = 1 << 2,

    UIViewAutoresizingFlexibleTopMargin,          = 1 << 3,

    UIViewAutoresizingFlexibleHeight,                 = 1 << 4,

    UIViewAutoresizingFlexibleBottomMargin     = 1 << 5

    };

    要点:(1)尽量避免使用#define预处理命令。#define预处理命令不包含任何的类型信息,仅仅是在编译前做替换操作。它们在重复定义时不会发出警告,容易在整个程序中产生不一致的值。

    (2)在源文件(.m)中定义的static const 类型常量因为无须全局引用,所以它们的名字不需要包含命名空间。

    (3)在头文件(.h)中定义的全局引用的常量,需要关联定义在源文件(.m)中的部分。因为需要被全局引用,所以它们的名字需要包含命名空间,通常是用它们的类名作为命名前缀。

    (4)尽量用NS_ENUM和NS_OPTION宏来实现枚举。

    建议4:优先使用对象字面量语法而非等效方法。

    对象字面量允许方便地定义数字、数字和字典对象。

    (1)尽量使用对象字面量语法来创建字符串、数字、数组和字典等,使用它比使用以前的常规对象创建方法语法更为精简,同时可以避免一些常见的陷阱。

    (2)对象字面量语法特性是完全向下兼容,使用新特性编写出来的代码,经过编译后形成的二进制程序可以运行在之前发布的任何OS中。

    (3)在数组和字典中,要使用关键字和索引做下标来获取数据。

    (4)使用对象字面量语法时,容器类的不可是nil,否则运行时将会抛出异常。

    以上就是今天的笔记记录,如果里面有什么不对的地方,请多多指教!多谢

    相关文章

      网友评论

          本文标题:编写高质量的代码:改善Objective-C程序的61个建议(读

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