《软件设计精要与模式》书评
作者:侯伯薇
终于阅读完了张逸先生的《软件设计精要与模式》一书,掩卷沉思,书中对于软件设计这门学问的理解和阐述让我受益良多,潜移默化之中,我对于软件设计的过程以及模式的使用又有了新的认识。因此,我对此书的评价是一本不可多得的优秀书籍。
不能光说优秀,到底优秀在何处呢?个人感觉有以下几点:
首先,内容不浮躁。
放眼当今的图书市场,很多书都被冠以《**天精通***》《***入门到精通》等等很诱惑人的题目,具体的内容却让人不敢恭维,看完全书之后,学到的都是最基本的知识,能够跟着书上的例子做几个简单的程序,甚至于还学会了其中一些不好的编程习惯,就飘飘然以为自己是开发高手了。浮躁是作为程序员的人所应当避免的,但正式很多书内容的浮躁,导致了人的浮躁。
而张逸先生的这本书则有很大的不同,里面并没有通篇列举大量初级的代码,他在书中提出的代码都是经过深思熟虑的,非常具有代表性的代码。并且,即便是在实例的部分,也没有直接给出最终的代码,而是先给出有问题的写法,然后逐步重构、改进,这个过程中不断地将软件设计的思想潜移默化地传递给读者,让读者理解其中的奥秘。另外,书中更多的是张逸先生对于软件设计和模式应用的理解和经验之谈,这在国内的书中是不多见的,这样的无私共享,与张逸先生本身的做人态度是分不开的。
其次,内容不枯燥。
很多做技术的人写起书来都是满篇的计算机术语,让人看了之后昏昏欲睡。或者就是大段的代码,本来是一本中文书,里面的英文字母所占的篇幅比中文字要多出很多。
而张逸先生则不同,他本人的文学水平颇高,且以作为文学爱好者,撰写各种散文、小说为乐。所以,在他的书中,不完全都是冰冷的代码和技术术语,经常会出现各种名言警句,或是恰如其分的比喻,为文章增色不少。而且,全书的文字流畅自然,有时候读起来仿佛是一篇优美的散文,聆听到的是张逸先生对于软件设计发自于内心的感受。
最后,内容对读者很负责。
很多时候,我们会看到某些作者为的就是求名求利,写书的时候会不对读者负责,敷衍了事,对于其中的技术细节以及代码不加检查,结果带有很多会误导初学者的习惯,甚至于漏洞、错误百出。或者是交付印刷之后就销声匿迹,对于读者的意见和建议视而不见,听而不闻,自顾自地去继续追求名利了。
张逸先生不同于上述的情况,仅仅从他精心修订该书的第二版就可以看出,它不仅仅要写出一本书,而且要写出一本高质量的书,对于其中不满意的地方,张逸先生不惜花费大量的时间和精力,对其进行改善,力求尽善尽美,力求能够让读者在阅读之后对于软件设计这门学问有崭新的认识。而且,在本书的字里行间,我们不难发现,文字是经过斟酌的,代码是经过挑选的,案例更是从张逸先生的实际工作经验中来的,这不同于某些书中玩具式的代码,张逸先生所展现出来不仅仅是代码,还有他在工作中所得到的宝贵经验。如果说浅薄的代码只是武功中的花拳绣腿,那么张逸先生书中的内容都是难得的内功秘籍。
正因为上述的三点,才成就了这么优秀的一本书,接下来再让我们来浏览一下书中的内容。
第一部分 理论概述
在这部分中,张逸先生概述了软件设计过程中一些比较重要的理论,但并非是简单的从其他书中抄袭,而是加上了自己的理解,抽取出其中的精华部分,为接下来的理论和事件相结合做好了准备。如果读者已经对其中的概念已经烂熟于心,当然也可以略过,不过可能就会错过作者对这些理论颇有见地的阐述了。
第二部分 阅读.NET的代码
阅读别人的代码是提高自己软件设计和开发水平非常有效的手段之一,在这个部分中,作者带着我们一起阅读的是.NET的一些核心代码,其中使用了很多设计模式,从中我们可以理解微软的开发人员的思路,从而借鉴,以提高自身。
第三部分 动手实践
终于到了实践的部分,在这里作者和我们一起创建了一个媒体播放器的示例。最初的设计比较拙劣,但是作者和我们一起分析,不断地改进设计,从而使得这个软件在各个方面都得到了长足的进步。或许软件本身的代码并不是最重要的,重要之处就在于改善的过程,其中我们逐渐地了解到软件设计的各种方法以及设计模式应该具体在什么地方如何应用。
第四部分 经验总结
这个部分的内容个人认为是本书的精华所在,因为其中简明扼要地剖析了张逸先生在做过的实际项目中,是如何应用软件设计的方法和设计模式的。这些都是经验之谈,而且是来自于一线实战的经验之谈,我们需要做的就是和作者一起分析实际的情况,一起研究可行的方案,并选择最好的来解决问题。
第五部分 关于架构
说到软件设计,总是会说到架构,对于大型的软件系统来说,好的架构是必不可少的。张逸先生在这个部分中和我们一起对微软的petShop项目做了一次研究,让我们了解到其中所涉及到的架构方面的知识。另外,透露一点儿内部消息,张逸先生一直在筹划一本架构方面的书,已经积累的大量的素材,我也期望能够早日看到他的关于架构的新书的问世。
总而言之,这本书在国内的众多计算机图书中非常突出,绝对是一本经得起时间考验的好书,如果你对软件设计的方法以及设计模式感兴趣,那么必定会在阅读本书的过程中获得提高和进步。