无忧技术网 - RSS订阅 
无忧技术网

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


作者:[佚名] - 发布:2010-4-22 17:35:38 - 来源:无忧技术网
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年出版。

结论

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

责任编辑:liqwei
打印本页】【关闭本页】【返回列表
·上一篇:Java介绍
·下一篇:JDBC编程基础
 文章评分
  • current rating
-5 -4 -3 -2 -1 0 +1 +2 +3 +4 +5
 相关文章
 相关评论
 站点最新文章 更多>> 
·[经典影音]弱点
·[经典影音]萨利机长
·[经典影音]天空之眼
·[管理知识]康奈尔笔记法,提高100%学习效率
·[管理知识]刘强东:我管75000人靠这4张表格
·[管理知识]跟壳牌学HSE管理
·[运营策划]编辑工作内容整理
·[至理名言]奋斗与决定
·[瀚海拾遗]盲人打灯笼之各家论道
·[搞笑段子]中国男足
 站点浏览最多 更多>> 
·[协议规范]http断点续传原理:http头 Range、…
·[JS/CSS/HTML]HTML 空格的表示符号 nbsp / en…
·[NoSQL]Mongo数据库简介
·[协议规范]什么是SPF记录?如何设置、检测SP…
·[协议规范]图解 HTTPS 通信过程
·[PHP]精选国外免费PHP空间推荐
·[程序综合]常用IP地址查询接口
·[程序综合]什么是 DNS Prefetch ?
·[程序综合]获取客户端IP地址的三个HTTP请求…
·[Linux]/usr 目录的由来