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

简介: 我一直在思考,如何才能编写出高质量、优秀的代码,我也在不停地探寻,希望找出类似于武侠小说中所说的武功秘籍,在编写代码一途可以帮助大家走“捷径”从而达到事半功倍的效果。


前 言

如何写出高质量的代码?
我一直在思考,如何才能编写出高质量、优秀的代码,我也在不停地探寻,希望找出类似于武侠小说中所说的武功秘籍,在编写代码一途可以帮助大家走“捷径”从而达到事半功倍的效果。
《道德经》第四十八章中说“为学者日益,为道者日损。损之有损,以至于无为。无为而不为”。这句话是说,治学上,不要过于追求外在的经验知识,否则经验知识越积累增多,就会越僵化臃肿。要学会透过直观体悟把握事物未分化时的状态或者内索自身虚静,洞悉其内在的道化真谛,从而简之再简。这些也就是我们现在说的“大道至简”。
治学如此,写代码更是如此。在程序员写代码的职业生涯中,前5年,他看到的只是一行一行的代码,他会为自己洋洋洒洒写成的代码而陶醉;5年之后,就不是单纯地写代码了,而是在做一件艺术品,此时的程序员就像雕刻家一样,在刻下每一刀之前,都需纵观全局,细细揣摩,落刀如有神,一气呵成。故此,写出优秀的高质量代码,需要像唐僧西天取经一样,踏踏实实,用平常心闯过一关又一关,如此,写出高质量的代码自然就是水到渠成的事了。写代码时切忌心态浮躁,急功近利。

目 录

前 言
第1章 让自己习惯Objective-C
建议1:视Objective-C为一门动态语言
建议2:在头文件中尽量减少其他头文件的引用
建议3:尽量使用const、enum来替换预处理#define
建议4:优先使用对象字面量语法而非等效方法
建议5:处理隐藏的返回类型,优先选择实例类型而非id
建议6:尽量使用模块方式与多类建立复合关系
建议7:明解Objective-C++中的有所为而有所不为

第2章 数据类型、集合和控制语句
建议8:C语言与Objective-C语言的关系是充分而非必要条件
建议9:高度警惕空指针和野指针的袭击
建议10:在64位环境下尽可能利用标记指针
建议11:谨记兼容32位和64位环境下代码编写事项
建议12:清楚常量字符串和一般字符串的区别
建议13:在访问集合时要优先考虑使用快速枚举
建议14:有序对象适宜存于数组,而无序对象适宜存于集
建议15:存在公共键时,字典是在对象之间传递信息的绝佳方式
建议16:明智而审慎地使用BOOL类型

第3章 内存管理
建议17:理解内存和Objective-C内存管理规则
建议18:内存管理讲究“好借好还,再借不难”
建议19:区别开alloc、init、retain、release和dealloc之间的差异
建议20:优先选用存取方法来简化内存管理
建议21:对象销毁或者被移除一定考虑所有权的释放
建议22:明智而审慎地使用dealloc
第4章 设计与声明
建议23:编写代码要遵守Cocoa API约定
建议24:洞悉实例变量
建议25:透彻了解属性的里里外外
建议26:存取方法是良好的类接口必要组成部分
建议27:明晓类公共领域的方法都是虚方法
建议28:初始化还是解码取决于是否支持归档和解档
建议29:利用键–值机制访问类的私有成员变量和方法
建议30:浅复制适宜指针而深复制适宜数据
建议31:明智而审慎地使用NSCopying
建议32:使用协议来实现匿名对象的提供
第5章 实现
建议33:使用类别把类的实现拆分成不同的文件
建议34:明智地使用内省可使程序更加高效和健壮
建议35:尽量使用不可变性对象而非可变性对象
建议36:利用复合能巧妙地把两个类或两个对象融合
建议37:使用类扩展来隐藏实现的细节
建议38:使用内联块应注意避免循环引用
建议39:利用类别把方法添加到现有的类
建议40:通过强弱引用来管理对象的所有权
第6章 继承与面向对象设计
建议41:明确isa在继承上的作用
建议42:利用类别和协议实现类似多重继承的机制
建议43:类别和类扩展是类继承的延续性拓展
建议44:继承基类的实现行为勿忘调用super
第7章 设计模式与Cocoa编程
建议45:设计模式是特定环境下的特定问题的解决方案
建议46:MVC模式是一种复合或聚合模式
建议47:对象建模在数据库中也广泛使用
建议48:类簇可简化框架的公开架构而又不减少功能的丰富性
建议49:委托用于界面控制,而数据源用于数据控制
第8章 定制init...和dealloc
建议50:了解对象的alloc和init...
建议51:直接访问实例变量的init...方法
建议52:初始化方法必须以“init”字母开头
建议53:从init...方法得到的对象可能是不想要的
建议54:实现init...方法的唯一性或者指定性并非“不可能”
建议55:init...方法有“轻重级别”之分
第9章 Objective-C与Swift的兼容性
建议56:Objective-C和Swift的互用性基于映射机制
建议57:利用Swift的特性可增强已有的Objective-C代码
建议58:洞悉Objective-C 和Swift类型转换的处理机制
建议59:C语言的数据类型在Swift中“有所变有所不变”
建议60:Swift和Objective-C兼容性是基于混搭机制
建议61:利用迁移机制实现Objective-C代码的重生

相关文章
|
Shell Linux C语言
Windows 下使用 GNUstep 编译并运行 Objective-C 程序
今晚上开始看《Objective-C 程序设计(第4版)》这本书(OSChina 正在做此书的书评活动,详情请看这里),到现在为止看到第 7 章,于是想动手试试写两简单的程序编译跑跑看。
1476 0
|
NoSQL iOS开发 编译器
xcode反汇编调试iOS模拟器程序(三)查看Objective-C函数与参数
在Objective-C函数的入口处(第一行)加断点,可用esp指针来探查参数。 以esp为基址,往后的偏移分别是: 0:函数执行完毕后的返回地址(不是返回值的地址哦) 4:对象实例的指针,即self指针 8:selector,实际是一个...
1235 0
|
7月前
|
安全 编译器 Swift
IOS开发基础知识: 对比 Swift 和 Objective-C 的优缺点。
IOS开发基础知识: 对比 Swift 和 Objective-C 的优缺点。
435 2
|
5月前
|
开发工具 iOS开发 容器
【Azure Blob】关闭Blob 匿名访问,iOS Objective-C SDK连接Storage Account报错
iOS Objective-C 应用连接Azure Storage时,若不关闭账号的匿名访问,程序能正常运行。但关闭匿名访问后,上传到容器时会出现错误:“Public access is not permitted”。解决方法是将创建容器时的公共访问类型从`AZSContainerPublicAccessTypeContainer`改为`AZSContainerPublicAccessTypeOff`,以确保通过授权请求访问。
【Azure Blob】关闭Blob 匿名访问,iOS Objective-C SDK连接Storage Account报错
|
7月前
|
缓存 开发工具 iOS开发
优化iOS中Objective-C代码调起支付流程的速度
优化iOS中Objective-C代码调起支付流程的速度
125 2