Effective Objective-C 2.0 读书笔记-Coding Style & API篇

接上篇

objc没有命名空间

所以,很容易出现命名冲突。类名,方法名,全局变量都要加上相应的前缀来减少naming collision。类名加上项目或者工程简称,方法也一样。全局变量加上相关的类名。

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

这样做可以:1. 减少编译事件;2. 可以一定程度上避免头文件的循环引用(chicken-and-egg situation);3. 降低代码彼此的依赖程度。

如果在头文件中不需要知道某个类的全部细节,可以使用向前申明(forward declaring)告诉编译器某个词代表某个类(@class className)。

如果无法使用向前申明,可以考虑将某些代码放入分类(class continuation)中,比如是否遵循某个协议(或者讲协议的定义放入单独的头文件)。

字面量

多用字面量数值,字面量数组,字面量字典,少用与之等价的方法。字面量看上去更直观。但字面量申明中,如果有nil值则会抛错,而等价的方法不会(碰见nil会停止读取后面的值)。

类型常量 > #define预处理指令

预处理指令没有类型信息。编译器会在编译前给预处理指令做查找和替换操作,有可能出现误替换。

枚举

与C#的枚举类似,objc的枚举可以以强类型的方式表示某些选项,状态,或者组合选项。使用NS_ENUM与NS_OPTIONS来定义选项/状态与组合选项。

分类(class continuation)


在对象内部,直接访问实例变量会比访问属性更快。但属性代表着封装,

你可能感兴趣的:(Effective Objective-C 2.0 读书笔记-Coding Style & API篇)