2008年3月19日星期三

好书推荐《HFOOAD》

为了不把标题弄得过长,我用了缩写,本书全称为《HEAD FIRST OBJECT-ORIENTED ANALYSIS & DESIGN》中文译名《深入浅出面向对象分析和设计》。



这本书是O'Reilly的Head First系列丛书中的一本。本书为什么好,我觉得有这几个方面。

一、本书对OOAD的讲解由浅入深
OOAD发展到现在也有10几个年头了,现在大多数人都在名义上采用OOAD在开发。但是有多少人真正懂OOAD呢?很少!国外少,国内更少!OOAD不是UML,OOAD 不是需求分析,OOAD不是Design Pattern。OOAD是一整套分析与设计的架构,它包含很多东西。市面上不乏好书,比如《Applying UML and Patterns An Introduction to Object-Oriented Analysis and Design and Iterative Development, 3rd Ed - Craig Larman》,或者《AGILE SOFTWARE DEVELOPMENT: PRINCIPLES, PATTERNS, AND PRACTICES》。但是在看这两本书的时候,我总是有摸不着边的感觉。看书的时候以为自己懂了,可是真正写UC或者做领域模型设计的时候又发现自己无从下手。后来我发现这是我自己水平未到。而且我喜欢的是简单的,真正能让我模仿的例子。《HFOOAD》做到了,它写的很浅,由浅入深。从一开始的分析客户需求到后面的健壮、可重用的设计,重构和设计模式,以及在设计时候遇到问题时功能和效率,成本与维护的平衡的选择,这么多OOAD的步骤和技术被作者抽丝剥茧,一步一步放在我面前。

我相信,一个希望自己变得更专业的软件从业人员都会喜欢这本书的。对我自己来说,我觉得虽然我进入这个行业有4,5个年头了,而且还有着计算机科学与技术的教育背景,但是我还是要很羞愧的说一句:我还不是专业的。

专业的人员是怎么样的?一句话,人家用正规的方式做软件,人家有方法学的支持。现阶段,主流的方法学就是OOAD。需求分析用什么?用例、场景、故事板,原型等等。怎么过渡到设计?领域模型、E-R关系模型、接口设计,类图等等。详细设计怎么做?UML主打,敏捷和迭代随行,设计模式长伴左右,测试驱动护驾。人家知道在什么时候用什么方法来解决问题。

所以要成为专业的人员,我以为有三个阶段:
第一阶段:学习理论基础,知道有哪些方法,有哪些阶段;
第二阶段:知道在什么阶段该用什么方法;
第三阶段:知道如何有效率地使用方法以及该得到什么样的结果。并且保持知识更新。
我认为《HFOOAD》这本书可以让我进入第二个阶段。而第三个阶段需要自己不断实践和摸索。

二、Head First系列独特的学习风格
我不知道这种学习风格是不是适合所有人,但是我觉得很合我胃口。
首先它不像其他的书,首先扔出一大堆定义把人砸晕,然后给出零零碎碎的例子,没有连贯性,实用性。它的教学方法是通过给出真实的场景,图片,对话等各种刺激大脑的方法来促进学习的效果。让人身临其境肯定要比单纯的文字要让人感兴趣的多,不是么?但是这需要看书的人主动参与,用自己的想像力带自己进入文中的场景,和里面的人一起动脑筋,一起动手做。面对如此好书,还用以前囫囵吞枣的方式看书,那还不如不看。

我还没有看完本书,有谁原意和我交流学习心得,欢迎来信。

补充:
2008-3-19
1.有人认为学习OOAD需要学习UP,RUP等开发过程。我觉得这个不是必须的。UP只是一个被定义了的开发过程,是个成品,大家可以直接使用。但是作为产品,就肯定有用户群。有用户群也就有非用户群。很不幸,大多数企业都有自己的一套做法,这时候生搬硬套某一种开发过程反而会起反作用。 因此我们学习OOAD就是学习OOAD的各个组成部分,既将他们独立开来,又让它们保持一定的联系,然后选择合适的应用到我们自己的企业中。慢慢的形成以OOAD为基础的自己的一套流程。

2.最近被人关注的比较多的是《Head First Design Pattern》。我自己个人认为,Design Pattern是具体技术,做软件应该由大及小,自上而下,先把握整体,再考虑细节。同时DP是需要有大量的经验支持的,掌握DP需要顿悟,我自认没有10年功底,我即使学了DP,也无法灵活应用。就像一个小孩拿着一把倚天剑,却无法发挥其作用一样。而OOAD则相反,这是基础,能早学一定要早学,打好基础。

没有评论: