美文网首页
《编写高质量代码的52个有效方法》

《编写高质量代码的52个有效方法》

作者: 彡廿 | 来源:发表于2017-06-12 22:02 被阅读13次

Objective-C 起源

Objective-C语言是有 Smalltalk 演化而来,使用消息结构而非函数调用

消息结构和函数调用的区别:

1.使用消息结构的语言,运行时所执行的代码由运行环境决定。
2.使用函数调用的语言,由编译器决定。

函数调用的语言,如果某个函数是多态的,只在运行时会根据“虚函数表”查找到对应的具体要执行的函数。
而消息结构的语言,所有的方法都是在运行时去查找所要执行的方法。

这就是为什么 runtime 那么强大的原因,可以在运行时去改变原始代码的执行逻辑。

要点:

Objective-C 使用动态绑定的消息结构,在运行时才会检查对象类型。接受一条消息之后,究竟应执行何种代码,由运行环境决定而非编译器决定。

在类的头文件中尽可能少引入其他头文件

前向声明: @class EOCEmployer
前向声明只是告诉有个这个类,但是具体的属性,方法不知道。

好处:

1.避免类之间相互引用,降低类之间的耦合度
2.缩短编译时间

如果两个类相互引用,虽然#import 不会引起死循环,但是其中一个类无法正确编译。

多用字面量语法,少用与之等价的方法(语法糖)

应该使用字面量语法来创建字符串,数值,数组,字典。与创建此类对象的常规方法相比,这么做更加简明扼要。
应该通过取下标操作来访问数组下标或字典中的键所对应的元素
用字面量语法创建数组或字典时,若值中有nil,会抛出异常。因此,务必保证值不为 nil。

    NSNumber *number = @1;
    NSString * string = @"string";
    NSArray * array = @[@1,@2,@3];
    NSDictionary * dictionary = @{@"name":@"wangbo",@"qq":@"91224867"};
    array[1];
    dictionary[@"name"];

多用常量类型,少用#define 预处理指令。

不要使用预处理指令定义常量,这样定义出来的常量不包含类型信息,编译器只是在编译前执行查找并替换。
在实现文件中使用 static const 来定义“只在编译单元内可见的常量”。由于此类常量不在全局符号表中,所以无须为其名称加类前缀,一般加 k
在头文件中使用 extern来声明全局常量,并在相关实现文件中定义其值。这种常量要出现在全局符号表中,所以一般用类前缀加一个区分。

// 在实现文件中
static const NSTimeInterval kAnimationDuration = 0.3;
// 在头文件中
extern NSString * const NIPLoginManagerDidLoginNotification;
// 在实现文件中
NSString *const NIPLoginManagerDidLoginNotification = @"VALUE";

相关文章

网友评论

      本文标题:《编写高质量代码的52个有效方法》

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