ITnews 版 (精华区)

发信人: petrel (紫燕*自在飞花轻似梦*燕燕于飞), 信区: ITnews
标  题: Java行业的圣经-四本最重要的个人藏书    
发信站: 哈工大紫丁香 (Sat Nov  9 21:23:29 2002) , 转信

     Java行业的圣经-四本最重要的个人藏书    jiangtao(收藏) 
  
关键字     Java 圣经 
  


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

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

《Refactoring: Improving the Design of Existing Code》

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

  《Refactoring: Improving the Design of Existing Code》是Addison-Wesley出版
社面向对象技术系列丛书中的一本,作者是Martin Fowler, Kent Beck, John Brant, Wi
lliam 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. McCorm
ick 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: Embr
ace Change》中描述了那些秘诀和它们是如何帮助你的。这本书的作者是Kent Beck,由A
ddison-Wesley出版社在1999年出版。

结论

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

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

 




--

※ 来源:.哈工大紫丁香 http://bbs.hit.edu.cn [FROM: 202.118.239.94]
[百宝箱] [返回首页] [上级目录] [根目录] [返回顶部] [刷新] [返回]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:3.342毫秒