编辑推荐

适读人群:软件开发人员及相关专业师生
  Java是目前的主流开发技术,如何更好地发挥其技术优势实现资源配置和获得更高商业价值,一直是Java技术发展的趋势。然而Java体系庞大、技术精深,如何写出优质代码,如何设计与优化系统架构,是高级开发者必须掌握的核心技术之一。《Java代码与架构之完美优化 实战经典》所面向的读者主要是那些想在技术领域成为佼佼者的朋友:
  1.走在架构师之路上的工程师。
  2.希望提高自己代码质量水平的程序员。
  3.追求完美的技术爱好者。
  总之,无论是在校大学生还是刚刚走上工作岗位的新员工,无论是做编码的程序员还是做测试的技术人员,无论是架构师还是项目经理,都可以从《Java代码与架构之完美优化 实战经典》中获得有益的收获。

内容简介

  虽然劣质代码一样可以运行,但是劣质代码的存在就会产生潜在bug,或者增加阅难度与理解困难,也增加了维护成本等不利影响,因此我们要追求高质量代码。编程,从内容上分析了拙劣代码的表现形式(现象),分析了其不利影响,给出了解决方案。同时给出了劣质代码的检查工具与方法,并汲取了Checkstyle、Findebug、PMD、Jtest等静态代码品质分析工具常见劣质代码现象。又利用常用的28种重构技巧,演示了代码由劣质变的过程。

作者简介

  颜廷吉,山东临沂人,毕业于北京大学软件与微电子学院,硕士学位。上海颐凡软件科技有限公司创始人兼首席架构师,高级系统工程师,“颐凡Java应用开发平台”软件著作权人,拥有PMP、OCP、LIP3等各种高级国际技术认证证书,日本国家高度人才。
  2007年就职于NTTDATA集团公司,任研发部主任,从事一线软件研发与设计近十年。曾经主导与参与了日本厚生劳动省HelloWork就职劳动项目、
  Taspo全国香烟自动贩卖项目、饮料自动贩卖机贩卖信息采集项目等大型系统的设计与研发,曾连续多年获得公司社长奖,项目奖等各种奖项。

目录


前言
第1章代码质量1
1.1什么是代码质量1
1.2什么是软件质量1
1.3代码质量与软件质量1
1.4代码质量优化理论2
1.5提高代码质量手段3
小结3
第2章代码质量静态检查工具4
2.1静态分析技术概述4
2.2静态分析技术原理4
2.3静态分析技术给我们带来的好处5
2.4常用重要静态分析工具6
2.5如何优化静态分析工具6
小结11
第3章代码质量优化通用准则12
3.1避免使用空块12
3.2避免使用空类15
3.3去掉多余的import16
3.4剪切无效代码17
3.5制定命名体系规约18
编程解密一:完美规约20
优化技巧01:按照命名规约赋予名称20
3.6去掉重复代码21
3.7如何优雅使用switch语句22
3.8用大写“L”代替小写“l”定义long变量24
3.9避免在一条语句中声明或赋值多个变量25
3.10去掉控制标志的临时变量26
优化技巧02:移除控制标志临时变量27
3.11避免赋予临时变量过多的角色28
优化技巧03:赋予临时变量单一职责29
3.12避免使用魔法数字29
优化技巧04:用常量取代魔法数字30
3.13在for循环内修正增量因子有什么弊端31
3.14用Enum代替Integer类型码常量32
优化技巧05:用枚举取代类型码34
3.15用BigDecimal类型进行精确计算35
3.16避免混用“+”36
3.17避免混用复杂运算符37
3.18避免使用复杂条件式或分支38
优化技巧06:用代码片段拆分复杂表达式41
优化技巧07:用卫语句代替嵌套条件表达式42
优化技巧08:用多态代替条件表达式43
3.19如何深入理解“==”的真正含义44
3.20要习惯于用泛型代替原生类型48
3.21如何正确使用通配符的边界53
3.22如何发挥正则表达式的威力55
小结58
第4章方法优化技巧59
4.1最小化原则59
优化技巧09:封装类成员60
4.2hashCode()与equals()是个孪生兄弟61
4.3使用string.equals("String")带来的弊端66
4.4避免命名不具有继承关系的同名方法67
4.5检查参数的有效性68
4.6避免使用可变参数69
4.7如何优化过长参数72
优化技巧10:把参数提升成类成员变量73
优化技巧11:引入参数对象74
4.8为什么不要重写静态方法75
4.9避免使用过时的API77
4.10优雅的集合运算方法知多少78
4.11避免重复发明轮子81
4.12如何对臃肿的方法进行瘦身82
优化技巧12:分解方法84
优化技巧13:合并方法85
小结85
第5章如何保证多线程代码质量86
5.1为什么不要重写start()方法86
5.2避免使用非线程安全的初始化方法87
5.3用final成员对象作为同期化对象锁90
5.4在synchronized内使用wait()方法92
5.5尽量缩小同期化代码范围93
小结94
第6章如何优化类与接口95
6.1避免创建不必要的对象95
6.2避免使用对象的浅拷贝96
6.3如何正确放置静态区位置100
6.4为什么不要使用静态引入102
6.5如何正确使用instanceof103
6.6避免实例化特有工具类106
6.7避免有深度耦合的类关系107
优化技巧14:移动变量110
优化技巧15:移动方法112
6.8如何为臃肿的类进行手术114
优化技巧16:分解类116
6.9如何优化冗赘类117
优化技巧17:合并类118
6.10避免在接口中出现实现代码119
小结120
第7章如何正确使用异常121
7.1避免定义继承Error或Throwable子类121
7.2避免抛出RuntimeException或Exception122
7.3避免捕获NullPointerException或Error124
7.4避免在finally块中处理返回值125
7.5避免使失败失去原子性127
7.6如何对异常进行封装128
优化技巧18:用异常代替错误码129
7.7将优雅的异常信息反馈给用户130
7.8避免乱用异常131
小结133
第8章如何优化代码性能134
8.1避免在大量字符串拼接时用“+”134
8.2避免在循环体内生成临时对象135
8.3在频繁插入与删除时使用LinkedList137
8.4在文件操作后要进行清理动作139
编程解密四:完美改造140
8.5避免显示调用finalized()方法142
小结143
第9章架构优化144
9.1单一职责原则144
优化技巧19:梳理并分解类职责145
9.2接口隔离原则147
优化技巧20:隔离接口149
9.3依赖倒置原则151
优化技巧21:提炼接口152
9.4里式替换原则154
9.5最少知道原则155
9.6如何扩展外部类功能159
优化技巧22:引入本地扩展160
9.7如何梳理混杂的架构体系160
优化技巧23:以委托代替继承165
优化技巧24:封装向下转型165
优化技巧25:提炼继承体系167
优化技巧26:折叠继承体系169
小结170
第10章包优化172
10.1发布等价原则172
10.2共同重用原则173
10.3共同封闭原则174
10.4无环依赖原则176
10.5如何保持包的清晰179
优化技巧28:规整包中类位置180
编程解密五:完美优化181
10.6如何抽出框架层次182
10.7如何提取框架工程183
小结189
第11章优良代码风格190
11.1如何优化代码格式工具190
11.2如何统一标准的代码格式193
11.3养成良好的代码注释习惯194
编程解密六:完美突破196
小结198
结束语199
附录200
参考文献229

前言/序言

  在武侠世界里,凡是顶尖的高手,要么是经历了一些奇遇偶得真传,要么就是经过几十年脚踏实地的修炼,才得以炉火纯青。虽然路不同,但他们最核心的修炼内容就是增强自己的内力。内功心法才是核心,因为剑法、拳法之类对聪明人来讲看一遍就会,而内力却很难速成。到达一定的境界后,武功就不分什么门派了,因为这都是融会贯通的。
  现实科技世界与武侠科幻世界同理,Java程序世界里也不乏顶尖高手,比如BruceEckel(《ThinkingInJava》作者)、JoshuaBloch(Google首席Java架构师,《EffectiveJava》作者)、KentBeck(敏捷之父)、MartinFowler(优化之父)等等。这些人之所以如此成功,并让追求者顶礼膜拜,并不是因为他们写了汗牛充栋的程序代码,而在于他们一出手就能展现绝顶高手的风范,写出令人拍案叫绝的高质量代码。因为这代表了他们的品牌与实力,他们会一直精益求精,不断优化,他们把自己的悟道——如何修炼内功秘籍——写成了书,就成了经典。
  程序员修炼内功心法的终极目标就是成为我们梦寐以求的架构师。众所周知的《Java编程思想》《Java高效编程》《敏捷软件开发》《设计模式》《优化》《人月神话》等巨著的核心内容之一就是教授这些内功心法,《Java代码与架构之完美优化 实战经典》也正是作者多年修炼的总结。品质体现于细节,《Java代码与架构之完美优化 实战经典》不但从宏观到细节进行了全面系统的介绍,而且形成了代码质量优化的理论与技巧体系,是进行代码优化不可多得的宝典。
  Java是目前的主流开发技术,如何更好地发挥其技术优势实现最佳资源配置和获得更高商业价值,一直是Java技术发展的趋势。然而Java体系庞大、技术精深,如何写出优质代码,如何设计与优化系统架构,是高级开发者必须掌握的核心技术之一。
  作者在Java技术领域从事一线工作十多年,其中8年时间是在东京度过的。日本的品质管理技术世界领先,作者来日之前就下定决心要掌握日本先进品质的相关技术,报效祖国——师夷长技以制夷!在这期间作者指导过NTT、日立、富士通等日本一流IT开发公司主导的大型商业项目(国家就业劳动项目、全国饮料以及香烟自动贩卖机贩卖信息统计项目等)的研发与代码优化,也使得作者有机会与日本一流架构师交流及研究他们独有的架构与质量优化技术之奥妙。
  学生时代的我们,所学到的是基本的技术理论知识;就业后作为初级程序员的我们,几乎不能胜任商业项目的质量要求标准,不能适应技术的深度与广度,即使能够完成的编码,也只是仓促地完成任务;经过3~5年磨练后的我们,回想以前写的代码,就会意识到当时写的代码是那么的不优雅!是的,根据作者实战经验,也根据通用的8020法则,按照要求写出可运行代码,只是完成了80%的工作,另外20%的代码持续优化工作,往往被大家忽略了。代码优化是一个综合的系统体系,包含的内容很多,《Java代码与架构之完美优化 实战经典》将把最核心的部分进行剖析并分享给读者。
  《Java代码与架构之完美优化 实战经典》从实际策划到完成书稿历时近2年,这期间作者一直不断吸收、整理、优化、提炼其内容。在Java世界里编写高质量代码并非易事,各种开源代码检测工具也对各种技术细节进行了规定,Checkstyle里有134项,FindBugs里有408项,PMD里有368项,Jtest里大概有1000项,面对这么多的规则,可能有人会说这还怎么下手写代码啊?是的,学习与研究这些枯燥无味的规则估计就要花掉很多时间,而且即使学习了也不一定能记住,况且有些规则是站在技术研究者的角度而做出的,在实际商业上根本用不到。基于实用原则,作者从这些代码检查规则中提炼了经典内容,吸收了日本代码优化培训以及品质管理培训内容精华,深入研读了《Java代码与架构之完美优化 实战经典》参考文献里所列的书籍以及网络上各种资源,并结合本人多年的实战经验,提取出了100个有代表性的经典优化实战案例,《Java代码与架构之完美优化 实战经典》素材来源如图1所示。后来又经过进一步分析整理,精选了最有代表性的77个案例,希望读者可以用最少的时间学到最有价值的代码优化技术。
  图1《Java代码与架构之完美优化 实战经典》素材来源
  《Java代码与架构之完美优化 实战经典》与软件质量
  故事一:完美我们做得到么?
  曾经有一家美国公司到日本一家小企业定制了10000件某种电子产品部件,要求次品率是1/1000。这家企业在规定的时间内邮寄去了产品,美国公司产品部打开一看,有些吃惊—怎么有两个盒子?一个大的,一个小的?再打开一看,大的里面放满了产品,同时有一个说明:全部合格产品9990件;另外一个小盒里放的是什么,大家就不言自明了。
  感悟:100%的合格就是一种完美,我们能做到么?日本之所以在软件行业乃至其他很多行业都做得如此出色,很重要的一点就是因为质量做得绝对世界第一。而我们国家则基本是粗放型经济,无论从对产品质量的认识程度,还是产品质量的管理方法,都离日本尚有一段很大的距离。希望《Java代码与架构之完美优化 实战经典》的问世可以缩小这段距离。
  软件质量(品质)包含的内容在我们规划的教程体系中,分为开发篇和管理篇,前者就是《Java代码与架构之完美优化 实战经典》所包含的内容。
  谈到代码质量,首先要辨析什么样的代码是劣质代码,什么样的代码是优质代码,可以用哪些工具自动检测劣质代码,以及如何把劣质代码转化成优质代码,《Java代码与架构之完美优化 实战经典》将带领读者一起解析。
  物皆有其位,而后物尽其位。世道乱了,就要治理,使其有序。同理,Java世界里有很多保留字,如果在保留字所控制区域里写有不合理的代码,那么将会给软件带来灾难性的后果。因此,每段代码都应该在其所在的位置——如果不在其位,那就需要优化。优化是确保代码质量的重要手段之一。《Java代码与架构之完美优化 实战经典》不但系统展示了常见劣质代码,而且总结了28种常用优化技巧,并给出了优化的具体步骤,向读者演绎了从劣质到优质的变化过程,可谓理论与实践的最佳组合。
  一个项目的成功不仅仅是靠某一个程序员的能力,而是项目团队的默契配合与努力的结果。要保证全体开发人员统一的编程风格与代码质量,就需要有编程规约来进行思想统一。虽然已有很多论述编程规约的文章,但要么太钻牛角尖、太偏理论化了,要么太粗浅、不够精细,没有太大实际商业价值。《Java代码与架构之完美优化 实战经典》附录里给出的Java编程规约、JSP编程规约、CSS编程规约是作者经过多年实战经验所总结的,可以直接应用到项目中,提高软件质量。
  无规矩不成方圆,任何商业系统,都应该坚持遵循工业标准。《Java代码与架构之完美优化 实战经典》是优质代码编写规范的提炼与总结,也可以作为评判优秀代码的标准之一。违反了《Java代码与架构之完美优化 实战经典》所介绍的规则之代码,需要根据项目实际情况进行优化,以提高代码与软件的质量。
  《Java代码与架构之完美优化 实战经典》与软件架构师
  一款软件的最终体现就是代码,而作为软件架构师,如果没有代码优化的意识与技术,就不能称之为软件架构师。任何合格的软件架构师,必须对代码优化的概念与技术烂熟于胸,信手拈来。一个连代码质量都不能控制好的架构师所设计的架构是不会有人信任的。
  《Java代码与架构之完美优化 实战经典》囊括了作者多年编程经验总结出的六项编程密技:完美规约(架构大于编码)、完美视角(设计者角度)、完美利用(站在巨人肩上)、完美改造(快速编码)、完美优化(高质量代码)、完美突破(架构师之路),这六项密技是完美编程的精髓,亦是完美编程的指导思想与灵魂。《Java代码与架构之完美优化 实战经典》的目的不仅仅是“授人以鱼”更要“授人以渔”——提高读者的编程及优化能力,而这种能力正是架构师的必备技能。
  《Java代码与架构之完美优化 实战经典》是IT365学院网站软件架构师系列培训教程体系中的基础读本,属于品质管理实战部分的内容,是培养具有高质量代码技术水平的优秀架构师所必备的利器之一。优秀的代码品质是程序员走向架构师神圣殿堂的必经之路,《Java代码与架构之完美优化 实战经典》将是这条路上的一盏明灯,帮助读者早日实现架构师之梦。
  《Java代码与架构之完美优化 实战经典》与翻转课堂模式
  翻转课堂(TheFlippedClassroom),是2011年在美国兴起的新型教学模式。与传统的课堂教学模式不同。在“翻转课堂”教学模式下,学生课下完成知识的学习,而课堂变成了老师与学生之间和学生与学生之间互动的场所,包括答疑解惑、知识的运用等,从而达到更好的教育效果。教与学颠倒,即翻转课堂,它颠覆了传统意义上的课堂教学模式。
  《Java代码与架构之完美优化 实战经典》充分参考了“翻转课堂”模式,在内容安排上,对于每一个案例,都是先展示劣质代码(优化前代码),也是有意让读者自己研究其瑕疵在哪里;之后给出优质代码(优化后代码),进一步让读者感受优质代码带来的效果;最后给出从劣质到优质演化过程的解析。这样在阅读技巧上进行了革新,可以让读者更好地吸收与理解《Java代码与架构之完美优化 实战经典》精华。
  《Java代码与架构之完美优化 实战经典》配套源码
  《Java代码与架构之完美优化 实战经典》的配套源码以及其他模板文件可以在www.365itedu.com(《Java代码与架构之完美优化 实战经典》官网)下载。
  在源码资源里,例如best0101包下面的代码为优化前的劣质代码,一般类的命名为Before,测试代码类的名称为BeforeTest;而best0102包下面的代码为经过优化后的优质代码,一般类的命名为After,测试代码类的名称为AfterTest,如图2所示。所有代码均是可执行代码,读者可以随时运行查看优化前后执行效果。
  图2源代码说明
  书中所选用代码比较简单,并对相对复杂的代码进行了背景说明。读者在学习过程中,可以自己先琢磨劣质代码的瑕疵在哪里,自己是否可以发现?可以用哪些手段来发现?如何优化?带着这些问题阅读《Java代码与架构之完美优化 实战经典》,会达到更好的学习效果。
  《Java代码与架构之完美优化 实战经典》配套教学视频
  传统教育模式中对程序设计的教学方式大多已经落伍,这使得学生在真正进入社会就业前不得不再进行二次培训;而现在社会上的培训机构也是鱼龙混杂,培训的内容很多也只是基础的入门级别。因此,需要一套从实际项目研发中提炼而出的、具有实际价值的、拿来就能用的、同时具有前瞻技术设计与研发引导性的高级软件架构师培训教程。《Java代码与架构之完美优化 实战经典》配套培训教程与教材同步出炉,可以帮助读者更好、更轻松地学好《Java代码与架构之完美优化 实战经典》的精髓。配套培训教程也可以到365IT学院下载。
  《Java代码与架构之完美优化 实战经典》特色
  1.内容精炼、超值:作者将十多年一线实战心得倾情奉献——说代码之美是重实用,讲架构优化是接地气。
  2.授人以鱼,不如授人以渔:作为编程指导思想与灵魂的六项密技,可全面提高读者自身的编程与代码优化能力。
  3.案例驱动,脚踏实地:不讲单独代码片段,而是以案例驱动(根据实际商业代码提炼之后的可运行代码)进行实战解析;不仅仅是经验与理论的总结,更重要的是用最直接的案例代码来说明技术应用方式。
  4.图解技术,形象生动:利用图解方式避免了乏味难懂的文字描述,使繁冗复杂的事物一目了然,是对理论进行深刻理解的形象记忆。“图+代码”是技术学习的最佳方式。
  《Java代码与架构之完美优化 实战经典》所面向的读者
  故事二:敬业之神
  敬业之神——野田圣子。
  她37岁就当上了日本内阁邮政大臣。
  她的第一份工作是刷厕所:她把厕所刷得光洁如新,一尘不染,她直接把冲厕所的水舀一勺一饮而尽,来证明其工作质量。
  她有一句名言:就算这一辈子都在洗厕所,也要当个最出色的洗厕人。
  敬业之神的启示:通过不断修炼内功,不断优化,刷厕所都可刷成行业的佼佼者!高端的品质目标,究极的爱业敬业态度,给予了我们极大的心灵震撼与鼓舞!——想出人头地么?想有所成就么?那么把一件事做好,把其品质做到极致,就成功了!
  《Java代码与架构之完美优化 实战经典》所面向的读者主要是那些想在技术领域成为佼佼者的朋友:
  1.走在架构师之路上的工程师。
  2.希望提高自己代码质量水平的程序员。
  3.追求完美的技术爱好者。
  总之,无论是在校大学生还是刚刚走上工作岗位的新员工,无论是做编码的程序员还是做测试的技术人员,无论是架构师还是项目经理,都可以从《Java代码与架构之完美优化 实战经典》中获得有益的收获。
  如何阅读《Java代码与架构之完美优化 实战经典
  《Java代码与架构之完美优化 实战经典》的各个章节都有一定的独立性,之间也有相互的关联性,如图3所示。
  图3 代码优化体系构成
  第1章主要解释与代码质量相关的理论基础,其余章节都是介绍与代码优化相关的技巧体系。
  第2章介绍了自动代码质量检查工具的原理与实战技巧。
  第3章到第8章主要介绍了代码质量优化经典案例解析,从编码通用准则、方法、多线程、类与接口、异常以及性能方面进行了详细分析说明且都有可用自动工具进行检查的案例。其中,第3章是代码优化的基础,也是其他章节的基础,读者对第3章所述内容掌握程度的优劣,将直接影响到其他章节代码优化的效果;而第3章到第8章经典案例代码优化的效果,又直接影响到第9章与第10章架构优化的效果。
  第9章与第10章主要论述了架构、包优化的各种技巧与原则。
  第11章介绍代码风格,优秀的代码还需要有很好的展现形式。这一章详细说明了优化代码风格所需的模板技术以及优化代码的手段。代码风格体现于整个代码文件,因此本章是第3到第10章优化内容的一个升华。
  《Java代码与架构之完美优化 实战经典》正文对于代码质量优化进行了宏观的介绍,附录中的编程规约(Java、JSP、CSS)则更加详细地描述了代码优化实践经验,是对《Java代码与架构之完美优化 实战经典》代码优化技巧的补充,使《Java代码与架构之完美优化 实战经典》形成了全面系统的代码优化体系。
  《Java代码与架构之完美优化 实战经典》每个经典案例,都是对相关技术的总结。对于每个案例,都从优化前代码、现象描述、不利影响分析、检测工具或方法、最佳解决方案、优化后代码六个方面进行了剖析。如果本案例涉及优化技巧,那么会对优化技巧从优化类别、实施方法等方面再进行深度解析,让读者更加深刻地理解案例所阐述的相关内容。同时,对案例中重要的技术点也做了提示,以引起读者的注意,加强相关技术点的理解与重视。
  《Java代码与架构之完美优化 实战经典》经典示例代码,不仅是给读者介绍技术与知识的演示,更重要的价值在于成为读者自我提高与演练的绝佳手段。在阅读的过程中一定要亲自动手练习各个案例(建议圈点出劣质代码的瑕疵并做注释,评论出优质代码的亮点),经过“思考→实践→提炼”之后,可更好的转换成自己的技术与知识体系,达到融会贯通的境界。
  另外,为了突出说明各代码所要体现的主题,《Java代码与架构之完美优化 实战经典》所示例代码并没有严格按照一般代码编写规范要求,进行标准的代码注释,只是为降低代码的理解难度,适当地添加了一些必要的注释。为了精简代码,有些案例代码的import,set/get部分也进行了省略。
  术语解释
  1.成果物:最终要交付给客户的成品资料。
  2.类型编码:简称类型码,是数据字典的一种(如1代表男,2代表女)。
  3.正常系代码:处理正常业务逻辑的代码。
  4.异常系代码:处理异常部分的代码。
  5.饿汉式初始化:指对象在类装载时构建,急切初始化,不调用也创建。
  6.懒汉式初始化:指对象在第一次被使用时构建,延迟初始化,调用时才创建。
  符号说明
  文中为了标注的方便,用了一些简略符号,总结见表1。
  表1《Java代码与架构之完美优化 实战经典》简略语
  符号说明
  (C)利用CheckStyle检查是否违反规约
  (F)利用FindBugs检查是否违反规约
  (P)利用PMD检查是否违反规约
  (R)利用Review人工检查进行检测
  (EC)利用Eclipse的格式模板或其自身的编译设定进行检测
  (EM)利用Emma代码覆盖率工具进行检测
  在“检测工具或方法”部分,用符号码来代替内容,而且符号码后面紧跟各个工具检查出的错误名词,以便查询。
  致谢
  首先,感谢同事尹勋成、周伟鹏、王超、袁宏等分享的工作经验以及对《Java代码与架构之完美优化 实战经典》写作提出的建议。
  其次,要感谢忘年之交贺印普兄长在百忙之中抽出时间为《Java代码与架构之完美优化 实战经典》作序,以及友人宋海燕对《Java代码与架构之完美优化 实战经典》进行的阅读体验反馈。
  最后,感谢家人的大力支持。作者为了《Java代码与架构之完美优化 实战经典》及其配套视频早日和读者见面,两年来占用了几乎所有的休息时间进行写作。特别是2014年以来,作者为了尽快完成此书,请假半年,专研创作,排除了所有的外界干扰,以期能够早日完成一本优秀的教程。家人的默默支持,哪怕是深夜的一杯热茶,睡前的一声叮嘱,都是作者前进的动力。作者不分日夜地敲击着键盘,推敲着每一个实例代码,斟酌着是否还可以再优化,是否可以更好地把技术展现给读者,连陪伴家人散步都成了一种奢侈,对此家人毫无怨言,一直对作者支持鼓励。待到《Java代码与架构之完美优化 实战经典》完成时女儿也从2岁开始可以叫“爸爸”,到现在4岁可以撒娇拉着手要去买冰淇淋了,时光如梭,现在终于可以轻松一下,和女儿分享家庭的快乐了。
  读者在阅读过程中如果发现任何疑问,可以与作者通过以下方式联系。
  颜廷吉
  2014年10月18日于东京



其他推荐