Java行业的圣经-四本最重要的个人藏书

精彩书评 专栏收录该内容
15 篇文章 0 订阅

Java行业的圣经 四本最重要的个人藏书,他们的书名都不含Java

作者 Thomas E. Davis
译者 msklsf@263.net

摘要

Thomas Davis 推荐了四本书,它们可以让你在java开发中受益非浅。这些书扩展了Java的基本语法和语义,使你能更全面地理解面向对象的程序设计。

正文

《Design patterns》

《Refactoring: Improving the Design of Existing Code》

《AntiPatterns: Refactoring Software, Architectures, and Projects in Crisis》

《Extreme Programming Explained: Embrace Change》

  在这篇文章中,我提出了新手和专家在使用Java进行开发的区别,而且也给出了一个参考书目,帮助新手超越这个界限。这不是一个书目回顾,而是你通往职业发展中下一步的车票。

  Java是一个程序设计语言。它也是一个工具,如果错误地使用,它就是无用的,某些时候甚至是危险的。仅仅知道它的语法和语义不是一个程序员要做的。一个程序员也必须密切地关注和理解环境模式,也就是说在Java环境中,什么是面向对象设计。知道对象是什么、接口是什么、多少对象实现了一个接口等等无聊的东西是远远不够的。一个程序员必须知道这种使那些规则和关系融合成一个灵活的、可重用的、可扩展的系统的神秘方法。我在这里讨论的这些书将给你那些经验,提高你作为一名Java程序员的职业素质。令人奇怪的是,没有一本书在他们的书名中包括Java一词。

注:本文所讨论的所有书目的URL地址可以在本文后面的资源中找到。

《Design patterns》

  这本书的作者是Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides, 和Grady Boocha——the Gang of Four是他们著名的呢称,由 Addison-Wesley出版社在1995年出版。模式一词描述了一类重复的问题而且提供了一个可重用的解决方案。设计模式至少可以通过对象共享来帮助你避免内存限制的缺陷以简化你的工作,设计模式也可以创造一个类似于接口的、可以灵活地同第三方库进行综合的集成方式来简化你的工作。《Design patterns》仔细描述了这两种设计模式,给出了评价,而且提供了代码例子和易于理解的相关图表。虽然代码例子都是C++的,但是语法十分类似于Java,因此大多数程序员将毫无问题地掌握这些概念。有一本本书的仿制品,它采用Java作为例子,书名是《Java Design Patterns: A Tutorial》,作者是James William Cooper,由Addison-Wesley出版社在 2000年出版;但是没有the Gang of Four在《Design patterns》中所阐述的透彻和深度。

  一旦你熟悉了《Design Patterns》中所列出的设计模式,将认识到他们中的一些是如何发展的。在Addison-Wesley出版社1998年出版的《Design Patterns Applied(Software Patterns Series)》中,John Vlissides 叙述了在某些最流行模式上的争论和讨论,而且介绍了一些新的在《Design Patterns》中删去的模式。

《Refactoring: Improving the Design of Existing Code》

  会犯错误就是人。如果这是真理的话,我看到了数以百计比我更象人的程序。项目出问题了。错误出现了。进度延期了,质量牺牲了。这些都是对我们所从事的职业的警告。但是当事情逐渐变得最糟时,你需要在什么地方改变方向呢?我的非常多的同事采用"throw-away-and-start-over"的方法:从零开始,希望自己已经可以避免错误了。那是最极端的解决办法,它一定激怒了你的老板。但是不要绝望,因为有替代的办法。

  《Refactoring: Improving the Design of Existing Code》是Addison-Wesley出版社面向对象技术系列丛书中的一本,作者是Martin Fowler, Kent Beck, John Brant, William Opdyke, 和Don Roberts ,出版日期是1999年,这本书给开发者提供了重新开始的不同选择。Refactoring就是通过重构一个程序的内部结构但是不改变它的外部行为来提高它的性能的处理过程。Refactoring能让一个方法执行得更快或者提供更精确的执行结果,但是不改变这个方法的名字。这些改变对调用该方法的程序而言是不可见的,因此没有代码需要修改。

  这本书教读者如何通过一个特殊的意识来识别问题代码,而且将每一个放到一个程序目录中以便修改。例如,一个意识或许是一个不适当的亲密关系——描述了两个或更多个类的关系太紧密了以致对一个类的改变要求另一个类也要改变。这本书所建议的众多的解决方法的一个是将这个存在问题的方法移到一个更适当的类中。

《AntiPatterns: Refactoring Software, Architectures, and Projects in Crisis》

  软件开发不是易于出错和疏忽的唯一地方。管理同样易于出现缺陷,这是由于混乱的开发过程和不现实的开发进度。大多数因特网公司在他们的开发部门有一个令人担忧的人员流动速度。随着程序员的加入和退出,职责的层次结构就想代码结构一样变得令人费解。《AntiPatterns: Refactoring Software, Architectures, and Projects in Crisis》的作者是William J. Brown, Raphael C. Malveau, William H. Brown, Hays W. McCormick III, 和 Thomas J. Mowbray ,由John Wiley & Sons出版社 在1998年出版,这本书将把上述加入到你整个的事业目标中。它对计划、错误管理、基本方法中的常见错误进行分类,使你跳出深渊。

  你的方案是否正遭受委员会的挑剔?就象有非常多的厨师在调一锅汤一样。或者你的代码基础是违反模式的卖方代码,导致你依赖一个不可靠的第三方产品。《AntiPatterns》将这些问题分为12大类和大约24个小类,指导你避免这些问题或者跳离你偶然进去的陷阱。

《Extreme Programming Explained: Embrace Change》

  XP是一种新鲜的、有些争议的新的开发过程,Kent Beck是它的先行者。XP力争按时提供好的软件,没有官僚作风,不重视传统的开发周期。在因特网启动的发烧期,每个人的目光都聚焦在赶上市场。在现实世界中,项目超过了预算或者过了最后期限,就会被取消,这最终导致某些公司彻底失败。项目开始的文档和图表很少能够反映最终的产品。因此,开发团队需要适应项目需求的频繁变化并作出反映。那正是XP要发光的地方。

  “沟通、简洁、反馈、勇气”是XP爱好者的秘诀。沟通有很多种途径,例如在成双成对的程序设计中完成。也就是一个人编码,伙伴们进行对等的实时检查。

  简洁意味着当你需要它的时候就仅仅建造那些你需要的。不浪费时间执行那些解决将来或许会发生的问题的奢侈方案。

反馈意味着“早发布,常发布”,这些为那些开放源代码的狂热者所喜爱。通过在开发的早期将产品呈现在用户的面前,你能尽量避免出现在开发周期后期的剧烈变动要求。

  最后,勇气促使XP弟子抓住机会并从结果中吸取经验。只有在极少见的场合,你才必须求助于"throw-away-and-start-over"技术。《Extreme Programming Explained: Embrace Change》中描述了那些秘诀和它们是如何帮助你的。这本书的作者是Kent Beck,由Addison-Wesley出版社在1999年出版。

结论

  最近我有机会从零开始一个公司项目。我的开发队伍靠这些书的教导生活和呼吸,成果是显著的。我们按照进度、没有延期建造了一个特别健壮和可扩展的系统。这些书改善了我的职业生涯,我相信他们也将改善你的职业生涯。

关于作者
         Thomas E. Davis是一个具有SUN认证资质的Java软件工程师,也是他的第二个成功的Internet计划的首席技术官。目前Thomas居住在阳关充足的南佛罗里达,遗憾的是大部分时间他都呆在室内的一台计算机前面

  • 0
    点赞
  • 2
    评论
  • 2
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

相关推荐
读者评论 前言 简介 第1章 对象导论 1.1 抽象过程 1.2 每个对象都有一个接口 1.3 每个对象都提供服务 1.4 被隐藏具体实现 1.5 复用具体实现 1.6 继承 1.6.1 “是一个”(is-a)与“像是一个”(is-like-a)关系 1.7 伴随多态可互换对象 1.8 单根继承结构 1.9 容器 1.9.1 参数化类型(范型) 1.10 对象创建和生命期 1.11 异常处理:处理错误 1.12 并发编程 1.13 Java与Internet 1.13.1 Web是什么 1.13.2 客户端编程 1.13.3 服务器端编程 1.22 总结 第2章 一切都是对象 2.1 用引用操纵对象 2.2 必须由你创建所有对象 2.2.1 存储到什么地方 2.2.2 特例:基本类型 2.2.3 Java数组 2.3 永远不需要销毁对象 2.3.1 作用域 2.3.2 对象作用域 2.4 创建新数据类型:类 2.4.1 域和方法 2.4.2 基本成员默认值 2.5 方法、参数和返回值 2.5.1 参数列表 2.6 构建一个Java程序 2.6.1 名字可见性 2.6.2 运用其他构件 2.6.3 static 关键字 2.7 你第一个J ava程序 编译和运行 2.8 注释和嵌入式文档 2.8.1 注释文档 2.8.2 语法 2.8.3 嵌入式HTML 2.8.4 一些标签示例 2.8.5 文档示例 2.9 编码风格 2.10 总结 2.11 练习 第3章 操作符 3.1 更简单打印语句 3.2 使用Java操作符 3.3 优先级 3.4 赋值 3.4.1 方法调用中别名问题 3.5 算术操作符 3.5.1 一元加、减操作符 3.6 自动递增和递减 3.7 关系操作符 3.7.1 测试对象等价性 3.8 逻辑操作符 3.8.1 短路 3.9 直接常量 3.9.1 指数记数法 3.10 按位操作符 3.11 移位操作符 3.12 三元操作符 if-else 3.13 字符串操作符 + 和 += 3.14 使用操作符时常犯错误 3.15 类型转换操作符 3.15.1 截尾和舍入 3.15.2提升 3.16 Java没有“sizeof” 3.17 操作符小结 3.18 总结 第4章 控制执行流程 4.1 true和false 4.2 if-else 4.3 迭代 4.3.1 do-while 4.3.2 for 4.3.3 逗号操作符 4.4 Foreach语法 4.5 return 4.6 break和 continue 4.7 臭名昭著“goto” 4.8 switch 4.9 总结 第5章 初始化与清理 5.1 用构造器确保初始化 5.2 方法重载 5.2.1 区分重载方法 5.2.2 涉及基本类型重载 5.2.3 以返回值区分重载方法 5.3 缺省构造器 5.4 this关键字 5.4.1 在构造器中调用构造器 5.4.2 static含义 5.5 清理:终结处理和垃圾回收 5.5.1 finalize()用途何在 5.5.2 你必须实施清理 5.5.3 终结条件 5.5.4 垃圾回收器如何工作 5.6 成员初始化 5.6.1 指定初始化 5.7 构造器初始化 5.7.1 初始化顺序 5.7.2. 静态数据初始化 5.7.3. 显式静态初始化 5.7.4. 非静态实例初始化 5.8 数组初始化 5.8.1 可变参数列表 5.9 枚举类型 5.10 总结 第6章 访问权限控制 第7章 复用类 第8章 多态 第9章 接口 第10章 内部类 第11章 持有对象 第12章 通过异常处理错误 第13章 字符串 第14章 类型信息 第15章 泛型 第16章 数组 第17章 容器深入研究 第18章 Java I/O系统 第19章 枚举类型 第20章 注解 第21章 并发 第22章 图形化用户界面 附录A 补充材料 可下载补充材料 Thinking in C:Java基础 Java编程思想 研讨课 Hands-on Java研讨课CD Thinking in Objects研讨课 Thinking in Enterprise Java Thinking in Patterns(with Java) Thinking in Patterns研讨课 设计咨询与复审 附录B 资源 软件 编辑器与IDE 书籍 分析与设计 Python 我著作列表 索引
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值