[book]道法自然

前不久读了王咏刚的〈凌波微步〉和〈凌波微步II〉,感觉不错。今天把他老人家的《道法自然》也买了下来。

在dearbook看到关于这本书的长篇大评,也一块copy了下来:

http://www.dearbook.com.cn/book/viewbook.aspx?pno=TS0023954

认真的作者,真实的经历,实践的结晶(读者 Soundboy2005-5-31)0人同意、0人反对    
   这本书买了几个礼拜了,但是买的时候公司的事情很忙,只是做了一个翻阅,最近终于比较深入得阅读了。在这里把自己的感受写下。
   读此书,最大的收获之一就是比较轻松地理解了设计模式。说实在的,GoF的《设计模式》买了几年了,但是对于20几个模式始终没有建立起一个明确的概念。而了《道法自然》一书中,经典的模式被作者用浅显甚至诙谐的语句描述了出来,使得脑子里马上有了一个直观的感性认识。这个时候再回头来看严密经典的论述就轻松了许多。
   这本书在网上是比较有争议的一本,其中争议的一个焦点就是书名,有人认为起了这么个名字太虚了,技术人员应该务实。有人则认为这个名字形象、容易记。我的感觉是按照这个词在中国文化中的地位这本书的确是有点欠份量,但是此书的确是一本独到的书,应该有一个独到的名字。这个名字给了这本书一个清晰明确的ID,方便大家交流。
   这本书可能不适合对于软件工程已经很有造诣的高手学习,因为里面讲的东西几乎都可以在近年的一些流行经典书籍中找到更详细、严格的描述。当然抱着挑毛病的目的的除外。 也不适合刚刚学习了C语言而没有写过几个完整程序的学生阅读。因为讲的东西大多数都是只有在实际项目中才能体会的。而有一类人,他们掌握了C++等语言的基本语法,也做了一些项目,但是对于究竟怎么去从整体上把握一个项目确没有很好的想法,买了几本类似《UML用户指南》、《设计模式》等大师著作却因为自己理解能力有限而读得费劲,总感觉书上的理论过于抽象难以和实际的应用有个顺利的链接而放弃。很不幸我就是这类人,而这本书最适合的读者应该就是这类人。很庆幸我就是这类人之一。因此我感觉这本书很适合我阅读。
   此书的作者一定是阅读了大量的面向对象方面的书籍文献。我这么想到不是因为书后罗列了4页纸的参考文献,而是书中大量明确的和广泛交叉的引用。要做到这点如果不对原著中的观点充分理解几乎是不可能的。
   这本书不能作为学习面向对象知识的教材,而只能作为辅导书。作者在简介中说“如果吧面向对象大师们偏重理论建构的经典读物称为面向对象盛宴中的主菜,那么本指南若能充当佐餐的凉菜或者是饭后的甜点,作者就心满意足了。”看来作者对于自己的作品有着清楚的认识和定位。我看经典读物可以比作高能量的压缩食品,营养丰富但是并不可口。有了《道法自然》书的调配,美味和营养就可以兼得了。
   书中的“笨笨点评”我比较喜欢,可以使得在读书的时候喘口气,还获得了一些常识。如果还嫌书的正文不够通俗,那么点评中的话就更是聊天式的。
   关于书的价钱,很多人说是贵了,这本书一共将近450页,定价是45.00元,平均每页一毛钱。我是在网上买的34块多,平均每页几分钱。不是很便宜,但也绝对不是贵。其实书的价钱要是按照纸张的量来算那是收旧书的小贩,读者买的是书的内容。我的感觉是花这30几块钱是值得的。
   很多人批评这本书没有自己的新观点,而是把面向对象理论做了一汇编。这看来是事实,但这里的汇编绝对不是简单的罗列,而是放在了实际的工程中的有血有肉的展示。而且,任何知识到了一个真正理解了他的人的脑子里面,或多或少都要产生一些自己的东西的。仔细的看此书,里面还是有一些出彩的地方的:
   第14章、UML的消息和进程间调用函数的关系。“为什么UML把所有函数调用都称为消息。”这个结果可能很多人都知道,但是能回答为什么的有几个人呢。这个分析好像在其他书中没有提及的(抑或是我孤陋寡闻?),而且这个问题也是一个长期疑惑的问题。
   书上还着重提了一下C++语言里面多态的概念,其实这是绝大多数模式存在的基础,要是没有多态,大部分模式根本就不可能存在。可是现在学过C++、甚至写过C++程序说不清多态的人大有人在(我好像就是其中一个,大概知道,但是严格说清楚好像不行)。从这点上看此书像是一个优秀的学生学习设计模式做的笔记,把相关内容串起来了讲了一下。给一些没有老师的学生一个学习的指到路线。
   这本书虽然在设计模式上用了大量的笔墨,但是却不是一本专门讲设计模式的书,不能用来作为设计模式的教材。Bridge ,Interpreter 等模式书中就没有提及。我在刚开始读这本书的时候感觉最大的收获是通俗的的讲解了设计模式。等到继续阅读以后,发现让读者学习设计模式不是作者的最终目的。书中讲了一个实际的、完整的项目。前三分之二部分讲的系统分析等。
   以上文字写于2004年底,最近又把这本书拿出来翻了一下,感觉还是有新的收获,虽然早先看的很多都忘记了。的确,如果没有实践的机会,很多东西是很难深刻掌握的,这本书讲的就是实践中的东西,给我们了一个真实实践的过程记录,其中也包括了作者多年的总结。
   如果你感觉到自己写了不少的代码,但是总是感觉停留在代码工人的阶段。对于整个软件的结构无法把我,而实践中又没有多少理论学习的机会,一些大部头的著作看起来又有点费劲,那么这本书是再适合不过了。

转载于:https://www.cnblogs.com/aiwz/archive/2005/09/24/6333167.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/277303.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

列表嵌套字典,根据字典某一key排序

在返回列表嵌套字典时候,往往需要对数据进行一定的处理:按照字典中某一个key排序 In [87]: a [{"name": "牛郎", "age": 23},{"name":"许仙", "age": 20},{"name":"董永&q…

写出C语言中5种数据类型的名称及其关键字,求C语言中的32个关键字及其意思?...

关键字如下:一、数据类型关键字(12个):(1) char :声明字符型变量或函数(2) double :声明双精度变量或函数(3) enum :声明枚举类型(4) float:声明浮点型变量或函数(5) int: 声明整型变量或函数(6…

想要设计自己的微服务?看这篇文章就对了

欢迎大家前往腾讯云社区,获取更多腾讯海量技术实践干货哦~ 本文由我就静静地看 发表于云社区专栏 本文通过使用Spring Boot,Spring Cloud和Docker构建的概念验证应用程序的示例,为了解常见的微服务架构模式提供了一个起点。 该代码在Github上…

mysql 开发进阶篇系列 41 mysql日志之慢查询日志

一.概述 慢查询日志记录了所有的超过sql语句( 超时参数long_query_time单位 秒),获得表锁定的时间不算作执行时间。慢日志默认写入到参数datadir(数据目录)指定的路径下。默认文件名是[hostname]_slow.log,默认超时是10秒,默认不开…

分数相同名次排名规则C语言,如何给数据排名(相同分数相同名次)-excel篇

使用Rank函数来做数据排名该函数是返回一个数值在一个数字列表中的排名。语法:RANK(number,ref,order)RANK(对象,范围,参数)number(必填参数):是特定单位格中的数据,需要在整个数字列表中排名的单个对象。ref(必填参数):是指需要排名的整体数列。即范围&…

MySql的连接查询

若一个查询同时涉及到两个或者两个以上的表,则称之为连接查询。常见的包括:等值连接查询,自然连接查询,非等值连接查询,自身连接查询,外连接查询(左右连接)。 1.等值与非等值连接查询…

qt运行C语言后无显示,qt designer启动后不显示界面问题的原因与解决办法-站长资讯中心...

Qt 5.6.1无论是在vs里双击ui文件还是直接启动designer.exe都一直无法显示界面,但任务管理器中可以看到该进程是存在的。前几天还正常的,但昨天加了一块NVIDIA的显卡(机器自带核显),可能与此有关。幸好还可以通过QtCreator打开ui文件进行编辑。…

OpenSolaris北京用户组的第一次活动

OpenSolaris北京用户组的第一次活动作者: BadcoffeeEmail: blog.olivergmail.comBlog: http://blog.csdn.net/yayong2005年10月10月15号,OpenSolaris北京用户组在北京西郊宾馆会议厅组织了成立以来的第一次活动。尽管OpenSolaris早在2005年6月14日就正式开放源代码&…

Android PermissionUtils:运行时权限工具类及申请权限的正确姿势

Android PermissionUtils:运行时权限工具类及申请权限的正确姿势 ifadai 关注 2017.06.16 16:22* 字数 318 阅读 3637评论 1喜欢 6PermissionUtil 经常写Android运行时权限申请代码,每次都是复制过来之后,改一下权限字符串就用,把…

Linux基础监控小工具nmon

nmon是一种在AIX与各种Linux操作系统上广泛使用的监控与分析工具, nmon所记录的信息是比较全面的,它能在系统运行过程中实时地捕捉系统资源的使用情况,并且能输出结果到文件中。nmon工具可以帮助在一个屏幕上显示所有重要的性能优化信息&…

vue的配置环境篇

1.电脑已经安装的nodejs和webpack。 2.1)打开cmd。winr。可以直接输入node -v查看版本。安装淘宝镜像 npm install -g cnpm --registryhttp://registry.npm.taobao.org ,安装成功可以查看下,cnpm -v 3.安装vue脚手架,输入命令&am…

Agilent RF fundamentals (4)- Impedance match and distortions

1 Impedance match: 2 distortions: Solar radiation produces background noise 转载于:https://www.cnblogs.com/huangbaobaoi/p/9650937.html

android论坛功能开发教程,Android教程 如何免费生成论坛App

介绍按照快速集成文档,您可以很容易的把BBSSDK提供的功能集成到您的应用中,然后使用BBSSDK来做开发。在集成前,您也可以先下载示例Sample的源码工程(包含应用内打开pdfoffice等格式文件)。使用Android Studio打开后,编译出网站上提…

自动化测试===adb 解锁手机的思路

在adb里有模拟按键/输入的命令 比如使用 adb shell input keyevent <keycode> 命令&#xff0c;不同的 keycode 能实现不同的功能&#xff0c;完整的 keycode 列表详见 KeyEvent&#xff0c;摘引部分我觉得有意思的如下&#xff1a; keycode含义3HOME 键4返回键5打开拨号…

android 编译器有问题,Android Studio 3.0 Beta 2发布:解决编译器bug

5月18日&#xff0c;IT之家曾经报道&#xff0c;谷歌发布了Android Studio 3.0的测试版&#xff0c;新增了对Kotlin语言的支持&#xff0c;而日前&#xff0c;谷歌发布了Android Studio 3.0的Beta 2版本。此版本并无新功能加入&#xff0c;不过修复了一个困扰开发人员的bug&…

Kali安装magescan评估工具

Magento &#xff08;麦进斗&#xff09; 是一套专业开源的电子商务系统。Magento设计得非常灵活&#xff0c;具有模块化架构体系和丰富的功能。易于与第三方应用系统无缝集成。其面向企业级应用&#xff0c;可处理各方面的需求&#xff0c;以及建设一个多种用途和适用面的电子…

领域驱动设计在马蜂窝优惠中心重构中的实践

前言 正如领域驱动设计之父 Eric Evans 所著一书的书名所述&#xff0c;领域驱动设计&#xff08;Domain Driven Design&#xff09;是一种软件核心复杂性应对之道。 在我们解决现实业务问题时&#xff0c;会面对非常复杂的业务逻辑。即使是同一个事物&#xff0c;在多个子业务…

鸿蒙系统发布会是什么时候,鸿蒙系统2.0发布时间是什么时候?或将与EMUI11一同发布!...

对于鸿蒙系统OS一直以来就备受大家的关注&#xff0c;作为华为自主研发的操作系统&#xff0c;它是华为之光&#xff01;很多人翘首盼望着它的到来&#xff0c;自1.0版本后鸿蒙系统2.0发布时间似乎确定下来了&#xff01;届时会与EMUI11一同向大家介绍&#xff01;今日&#xf…

HZNU 2019 Summer training 8

A - Petya and Origami CodeForces - 1080A 题意&#xff1a;制造一份邀请函需要2份a物品&#xff0c;5份b物品&#xff0c;8份c物品&#xff0c;一个盒子里面有k份物品&#xff08;可以为a或b或c&#xff09;问你制造n份邀请函需要用多少个盒子 题解&#xff1a;加起来就行了…

android layer-list,Android layer-list的属性和使用具体解释

Android layer-list的属性和使用具体解释。layer-list是用来多个图层堆叠显示的&#xff0c;借这个特性能够做一些特别的效果(比方&#xff1a;阴影、以下的效果等)&#xff0c;也能够投机取巧。1.代码片2.布局代码和效果图 (一定要注意在使用RadioGroup的时候要记的写RadioBut…