首页>参考读物>计算机科学与技术>软件与程序设计

编写高质量代码:改善Objective-C程序的61个建议
作者 : 刘一道 著
丛书名 : Effective系列丛书
出版日期 : 2015-09-24
ISBN : 978-7-111-51463-3
定价 : 59.00元
扩展资源下载
扩展信息
语种 : 简体中文
页数 : 220
开本 : 16
原书名 :
原出版社:
属性分类: 店面
包含CD :
绝版 : 未绝版
图书简介

内容简介
在通往“iOS技术殿堂”的路上,本书将为你编写健壮、优雅、高质量的Objective-C代码提供极为宝贵的经验!内容全部由Objective-C编码的最佳实践组成,从从基本原则、惯用法、语法、内存管理、设计、实现、设计模式、兼容性和性能优化的等方面深入探讨了编写高质量Objective-C代码的技巧、禁忌和最佳实践,一共总结出61条宝贵的建议。每条建议对应Objective-C程序员可能会遇到的一个问题。本书不仅以建议的方式从正反两方面给出了被实践证明为十分优秀的解决方案或非常糟糕的解决方案,而且分析了问题产生的根源,会使人有一种醍醐灌顶的感觉,豁然开朗。
本书针对每个问题所选择的应用场景都非常典型,给出的建议也都与实践紧密结合。书中的每一条建议都可能在你的下一行代码、下一个应用或下一个项目中显露锋芒。建议你将本书搁置在手边,随时查阅,相信这么做一定能使你的学习和开发工作事半功倍。

图书特色

从基本原则、惯用法、语法、内存管理、设计、实现、设计模式、兼容性和性能优化等方面深入探讨编写高质量Objective-C代码的技巧、禁忌和最佳实践

《道德经》第四十八章中说“为学者日益,为道者日损。损之有损,以至于无为。无为而不为”。这些话是说,治学上,不要过于追求外在的经验知识,否则经验知识愈累计愈多,就会僵化臃肿,要学会透过直观体悟把握事物未分化的状态或者内索自身虚静,洞悉其内在的道化真谛,从而简之再简。这些也就是我们现在所说的“大道至简”。
治学如此,写代码更如此。写代码,前五年,满眼看到的只是一行一行的众多代码,人们会为自己写就的洋洋洒洒的众多代码而陶醉;其后,写代码,写的就不是代码了,而是在做一件艺术品,像雕刻家一样,在下每一刀之前,需纵观全局,细细揣摩,落刀一点,瞬间,快速几刀,唰唰而成。故此,写出优秀的高质量代码,需要像唐僧西天取经一样,踏踏实实,一关一关地过,高质量的代码,自然就会水到渠成、自然而成,切忌心态浮躁、急功近利,从而达到“无为而为”。
故此,本书所写所得有关“Objective-C”的建议,不在于“鱼”而在于“渔”, 写出高质量的代码,没有捷径,贵在用心经营。希望你有所懂有所悟!


内容简介
在通往“iOS技术殿堂”的路上,本书将为你编写健壮、优雅、高质量的Objective-C代码提供极为宝贵的经验!内容全部由Objective-C编码的最佳实践组成,从基本原则、惯用法、语法、内存管理、设计、实现、设计模式、兼容性和性能优化等方面深入探讨了编写高质量Objective-C代码的技巧、禁忌和最佳实践。共总结出61条宝贵的建议,每条建议对应Objective-C程序员可能会遇到的一个问题。本书不仅以建议的方式从正反两方面给出了被实践证明为十分优秀的解决方案或非常糟糕的解决方案,而且分析了问题产生的根源,会使人有一种醍醐灌顶的感觉,豁然开朗。
本书针对每个问题所选择的应用场景都非常典型,给出的建议也都与实践紧密结合。书中的每一条建议都可能在你的下一行代码、下一个应用或下一个项目中显露锋芒。建议你将本书搁置在手边,随时查阅,相信这么做一定能使你的学习和开发工作事半功倍。

作者简介
刘一道
资深Mac/iOS开发工程师,有近10年软件开发经验,精通iOS、Objective-C、Xcode等与苹果开发相关的各项技术,同时对Android和Windows Phone等移动开发技术也有深入的研究,并积累了丰富的实战经验。出版了《Objective-C程序设计入门与实践》和《iOS 7:iPhone/iPad应用开发技术详解》等著作。

图书前言

如何写出高质量的代码?
我一直在思考,如何才能编写出高质量、优秀的代码,我也在不停地探寻,希望找出类似于武侠小说中所说的武功秘籍,在编写代码一途可以帮助大家走“捷径”从而达到事半功倍的效果。
《道德经》第四十八章中说“为学者日益,为道者日损。损之有损,以至于无为。无为而不为”。这句话是说,治学上,不要过于追求外在的经验知识,否则经验知识越积累增多,就会越僵化臃肿。要学会透过直观体悟把握事物未分化时的状态或者内索自身虚静,洞悉其内在的道化真谛,从而简之再简。这些也就是我们现在说的“大道至简”。
治学如此,写代码更是如此。在程序员写代码的职业生涯中,前5年,他看到的只是一行一行的代码,他会为自己洋洋洒洒写成的代码而陶醉;5年之后,就不是单纯地写代码了,而是在做一件艺术品,此时的程序员就像雕刻家一样,在刻下每一刀之前,都需纵观全局,细细揣摩,落刀如有神,一气呵成。故此,写出优秀的高质量代码,需要像唐僧西天取经一样,踏踏实实,用平常心闯过一关又一关,如此,写出高质量的代码自然就是水到渠成的事了。写代码时切忌心态浮躁,急功近利。
本书适合哪些读者
本书不是一本介绍“Objective-C”代码如何编写的入门级的书籍。故此,如果你只想初步了解一下“Objective-C”开发,而不想做深入研究的话,那么本书就不适合你了。
本书主要面向专业从事Objective-C开发或者想转向“Objective-C”开发的研究人员,帮助其编写便于维护、执行迅速且不易出错的代码。如果你是“Objective-C”开发技术大咖,翻阅本书,对你来说可能会有些浪费时间,故此也请你一瞥而过!
本书主要适合如下读者:
对软件开发,特别是对Objective-C开发有兴趣的人。
想成为一名专职的软件开发人员的人。
想进一步提高自己“Objective-C”技术水平的在校学生。
开设相关专业课程的大专院校的师生。
你该如何阅读本书
本书共9章,从内容上可以分3部分。大家可以根据自身状况,选择性跳读,翻阅自己最感兴趣或与当前工作相关的章节来读。下面把这几章简单归类评述,为你进行选择性跳读时提供参考:
第一部分(第1~5章):主要围绕如何写出高质量代码提出一些建议。这些建议一部分来源于苹果每年举行的一些开发大会,主要是针对Objective-C语法、性能与功能改进进行的阐述和解惑;另一部分来自于一线开发者平时工作中的点点滴滴的感受。作为笔者,我不过是把这些点滴像串珍珠一样把它们串起来,形成一个实用的、具有整体性的建议。
第1章 作为本书的首章,我感觉唠唠“Objective-C的那些事儿”很有必要。希望通过这一章的唠叨能让你有所收获。
第2章 主讲数据类型、集合和控制语句。《道德经》第五十二章中有言“天下有始,以为天下母。既得其母,以知其子;既知其子,复守其母。”掌握了基本的开发语言,就可以“知其子”—程序;反过来,通过开发程序,又可以“复守其母”—开发语言,即通过开发程序可以进一步巩固、加深对开发语言的理解。在Objective-C中,构建语言的基本单元—值和集合,更是重中之重。本章将围绕这些构建开发语言的“基石”从不同角度加以阐述。
第3章 主讲内存管理。内存管理曾经是程序员的噩梦,特别是在面向过程开发的过程中。虽然,在纯面向对象的开发语言中,例如C#和Java等开发语言,有了自动内存垃圾回收的机制,但依赖这种自动内存垃圾回收机制的代价往往很高,容易造成程序性能的耗损,进而容易产生难以突破的“性能劲瓶”。因此,在编写高性能的应用程序,特别是服务器程序时,不得不依赖C、Pascal和C++等非纯面向对象的语言来完成。现在,众多的Android手机或者平板上遇到的App莫名其妙崩溃的现象,在很大程度上与Android底层的内存回收处理不当有很大的关系。
在本书定稿之时,虽然,Objective-C已经具有了“垃圾自动回收”的机制,但洞悉其内存的管理机制,写出高质量的代码,还是至关重要的。
第4章 主讲设计与声明。《庄子·齐物论》中曰:“昔者庄周梦为蝴蝶,……不知周之梦为蝴蝶与?蝴蝶之梦为周与?”意思是说,庄子梦见自己变成蝴蝶,醒来后发现自己是庄周。庄子分不清自己是梦中变成蝴蝶,还是蝴蝶梦中变成庄子了。在Objective-C中,类与对象的关系,就有些类似庄子和蝴蝶的关系,从一定的角度来看,类就是对象,而从另外一个角度来看,对象又是类。本章就以庄周梦蝶做引子,来谈谈设计和声明。
第5章 众所周知,在面向对象的设计中,对于一个类,完成其定义,要包含类名、实例变量及方法的定义和声明,但这最多也只能算是完成20%的工作,其余80%的工作主要在于其实现。如何把类的实现写好,很考验一个人的功底。尽可能利用开发语言本身一些特性,是实现类的一个比较有效的途径。本章就结合Objective-C的特性,来介绍在类的实现中一些可利用的做法。
第二部分(第6~8章),相对于第一部分,本部分更多关注一些“习以为常”的理念,结合Objective-C语言,进行一番新的解读。这几章里面,很多东西你也许早已经知道,但一些理念如何融入自己的代码和设计中,却是更高的要求。正如巴菲特的理财理念,很多人都能知道,且能背诵得滚瓜烂熟,而在实际操作上,结果却大相径庭,其主要原因是,很多“理念”自己不过是记住罢了,并未已融入自己的血液和骨髓里,在实际操作上,仍旧沉溺于“旧习”。
第6章 主讲继承与面向对象的设计。随着这几年面向对象编程(OOP)越来越盛行,在编程领域,现在几乎是面向对象编程语言的天下了。继承,作为面向对象编程的三大特征(继承、多态和封装)之一,起着核心的作用。但不同面向对象的编程语言实现的方式,有着比较大的差异性。本章从纵向和横向两个维度,来阐述“继承”在Objective-C开发语言中的多面性,使你娴熟掌握“继承”在Objective-C开发语言中的“有所为而有所不为”。
第7章 主讲设计模式与Cocoa编程。设计模式是一种设计模板,用于解决在特定环境中反复出现的一般性问题。它是一种抽象工具,在架构、工程和软件开发领域相当有用。本章将介绍什么是设计模式,解释为什么设计模式在面向对象的设计中非常重要,并讨论一个设计模式的实例。
第8章 主讲定制init...和dealloc。在Objective-C 中,没有new和delete 这两个关键字,但存在着alloc和init...,它们承担着与new类似的功能,前者用于处理内存的分配,后者用于在分配的内存中进行数据的初始化;与delete类似的是dealloc。掌握init...,对于写出高性能的应用是至关重要的。
第三部分(第9章),在本书将近定稿时,恰遇到Swift的新版本推出,为了解决开发者在混用Objective-C和wift过程中遇到的一些疑难点,故此添加了本部分。如果对Swift“不感冒”,那么本部分你就没有阅读的必要了。
第9章 主讲Objective-C和Swift的兼容性。Swift是苹果公司在WWDC 2014新发布的一门编程语言,用来撰写OS X和iOS应用程序,但是Swift的推出,使很多原先很熟练使用 Objective-C的码农产生了一定程度的“惊惶”:担忧苹果公司放弃对Objective-C的支持,不得不花费一定的时间和精力来学习一门新的开发语言—Swift。Xcode 6或者更高的版本支持二者的相互兼容。也就是说,在Objective-C文件中可以使用Swift编写的代码,也可以在Swift文件中使用Objective-C编写的代码,但其相互兼容性是有条件的。本章就来讲解二者的兼容性问题。
本书没有采取循序渐进的方式。故此,读者可以根据“兴趣”选择自己喜欢的章节来阅读,这是最有效的读书方式,也是笔者推崇的读书方式。
勘误和支持
除封面署名外,参加本书编写工作的还有孙振江、陈连增、边伟、郭合苍、郑军、吴景峰、杨珍民、王文朝、崔少闯、韦闪雷、刘红娇、王洁、于雪龙、孔琴。由于笔者的水平有限,编写时间仓促,书中难免会出现一些错误或者不准确的地方,恳请读者批评指正。
书中的不足之处,还望各位读者多提意见,欢迎发送邮件至邮箱yifeilang@aliyun.com,期待能够得到你们的真挚反馈。
感恩致谢
本书之所以能出版,多亏机械工业出版社华章分社的编辑孙海亮先生多次催促,不断地给予我鼓励。期间华章群一些网友的鼓励,也使我受益匪浅,在此向他们表示感谢。最后,要感谢的就是我亲爱的读者,感谢你拿起这本书,你的认可,就是我的最大的快乐。

刘一道
于北京

上架指导

计算机\程序设计

封底文字

《道德经》第四十八章中说“为学者日益,为道者日损。损之有损,以至于无为。无为而不为”。这些话是说,治学上,不要过于追求外在的经验知识,否则经验知识愈累计愈增多,就会僵化臃肿,要学会透过直观体悟把握事物未分化的状态或者内索自身虚静,洞悉其内在的道化真谛,从而简之再简。这些也就说我们现在所说的“大道至简”。
治学如此,写代码更如此。写代码,前五年,人满眼看到的只是一行一行的众多代码,人会为自己洋洋而洒的众多代码,而陶醉;其后,写代码,写的就不是代码,而是做一件艺术品,像雕刻家一样,在下每一刀之前,需纵观全局,细细揣摩,落刀一点,瞬间,快速几刀,唰唰而成。故此,写出优秀的高质量代码,需要像唐僧西天取经一样,踏踏实实,一关过一关,高质量的代码,自然就会水到渠成,自然而成,切忌心态浮躁,急功近利,从而达到“无为而为”。
故此,本书所写所得有关“Objective-C”,不在于“鱼”而在于“渔”, 写出高质量的代码,没有捷径,贵在于用心经营。希望你所懂你所悟!

作者简介

刘一道 著:刘一民 资深iOS开发工程师,有近10年软件行业开发经验,在iOS、Android和Windows Phone等移动开发领域积累了丰富的经验,著有《Objective-C语言教程》等著作。此外,他还担任过数据分析师和项目经理等职务,从事过酒店、金融证券、建筑和移动通信等行业的软件开发。

图书目录

前 言
第1章 让自己习惯Objective-C 1
建议1:视Objective-C为一门动态语言 1
建议2:在头文件中尽量减少其他头文件的引用 6
建议3:尽量使用const、enum来替换预处理#define 10
建议4:优先使用对象字面量语法而非等效方法 13
建议5:处理隐藏的返回类型,优先选择实例类型而非id 17
建议6:尽量使用模块方式与多类建立复合关系 19
建议7:明解Objective-C++中的有所为而有所不为 23
第2章 数据类型、集合和控制语句 28
建议8:C语言与Objective-C语言的关系是充分而非必要条件 28
建议9:高度警惕空指针和野指针的袭击 31
建议10:在64位环境下尽可能利用标记指针 35
建议11:谨记兼容32位和64位环境下代码编写事项 38
建议12:清楚常量字符串和一般字符串的区别 43
建议13:在访问集合时要优先考虑使用快速枚举 44
建议14:有序对象适宜存于数组,而无序对象适宜存于集 48
建议15:存在公共键时,字典是在对象之间传递信息的绝佳方式 53
建议16:明智而审慎地使用BOOL类型 55
第3章 内存管理 57
建议17:理解内存和Objective-C内存管理规则 57
建议18:内存管理讲究“好借好还,再借不难” 61
建议19:区别开alloc、init、retain、release和dealloc之间的差异 63
建议20:优先选用存取方法来简化内存管理 66
建议21:对象销毁或者被移除一定考虑所有权的释放 70
建议22:明智而审慎地使用dealloc 73
第4章 设计与声明 75
建议23:编写代码要遵守Cocoa API约定 75
建议24:洞悉实例变量 77
建议25:透彻了解属性的里里外外 81
建议26:存取方法是良好的类接口必要组成部分 85
建议27:明晓类公共领域的方法都是虚方法 87
建议28:初始化还是解码取决于是否支持归档和解档 92
建议29:利用键–值机制访问类的私有成员变量和方法 93
建议30:浅复制适宜指针而深复制适宜数据 101
建议31:明智而审慎地使用NSCopying 103
建议32:使用协议来实现匿名对象的提供 106
第5章 实现 108
建议33:使用类别把类的实现拆分成不同的文件 108
建议34:明智地使用内省可使程序更加高效和健壮 109
建议35:尽量使用不可变性对象而非可变性对象 113
建议36:利用复合能巧妙地把两个类或两个对象融合 115
建议37:使用类扩展来隐藏实现的细节 120
建议38:使用内联块应注意避免循环引用 122
建议39:利用类别把方法添加到现有的类 124
建议40:通过强弱引用来管理对象的所有权 127
第6章 继承与面向对象设计 133
建议41:明确isa在继承上的作用 133
建议42:利用类别和协议实现类似多重继承的机制 136
建议43:类别和类扩展是类继承的延续性拓展 139
建议44:继承基类的实现行为勿忘调用super 141
第7章 设计模式与Cocoa编程 145
建议45:设计模式是特定环境下的特定问题的解决方案 145
建议46:MVC模式是一种复合或聚合模式 147
建议47:对象建模在数据库中也广泛使用 155
建议48:类簇可简化框架的公开架构而又不减少功能的丰富性 160
建议49:委托用于界面控制,而数据源用于数据控制 165
第8章 定制init...和dealloc 171
建议50:了解对象的alloc和init... 171
建议51:直接访问实例变量的init...方法 174
建议52:初始化方法必须以“init”字母开头 176
建议53:从init...方法得到的对象可能是不想要的 177
建议54:实现init...方法的唯一性或者指定性并非“不可能” 179
建议55:init...方法有“轻重级别”之分 181
第9章 Objective-C与Swift的兼容性 184
建议56:Objective-C和Swift的互用性基于映射机制 184
建议57:利用Swift的特性可增强已有的Objective-C代码 191
建议58:洞悉Objective-C 和Swift类型转换的处理机制 194
建议59:C语言的数据类型在Swift中“有所变有所不变” 199
建议60:Swift和Objective-C兼容性是基于混搭机制 204
建议61:利用迁移机制实现Objective-C代码的重生 209

教学资源推荐
作者: (英)Roger Garside, John Mariani
作者: 王立柱 编著
参考读物推荐
作者: Nicholas A.Solter, Scott J.Kleper
作者: (美)Stephen Asbury, Scott R.Weiner
作者: 田伟 郎小娇 著