`
cbf4life
  • 浏览: 25869 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

《设计模式之禅》第二次重印,窃喜

阅读更多

      前两天,编辑发邮件过来,说《设计模式之禅》第二次重印了,台湾繁体版也准备上市了,心中不仅窃喜,但同时也隐隐有点不安。窃喜的原因很简单,这本书是在今年3月份第一次印刷,然后到7月份第一次重印,现在12月份第二次重印,——这事儿搁谁身上都乐不可支,嘿嘿嘿嘿!那为啥说窃喜呢,谦虚是中国人公认的美德,而我又是原原本本的中国人,谦虚自然要把它当回事了,心里是乐开了花,但面上还得说“木啥,就是总结了点经验,适应读者的口味”罢了。

 

     为什么说不安呢,今年我又把《人月神话》(32周年中文纪念版,《The Mythical Man-Month》)读了一遍,这是我第二次完整的读它了,焦油坑了,人月了,银弹了,外科手术团队了等等,说的都很好,觉的很赞同,很欣赏作者,想想看这是30年前的书,现在还能引起这么多的共鸣,这可是技术书呀!30年哪,这要是搁在人身上,那是有代沟地,肯定有,但《人月神话》却没有(除了提到的内存转储、缩微胶片、ARPA网络、OS/360操作系统等等细节时才感觉它离我们实在是太远太远了)。我的不安也即出自这里,不知道若干年后,不说远的就说5年后吧,不知道还有没有人愿意翻翻我这本书,或者说它是不是已经流通到了垃圾收集站,以重量论价格了,——恩,这点还是比较欣慰的,《设计模式之禅》比较厚,纸张也不错,能卖个好价钱!

 

     还有一点担心是不知道这本书到底对读者有没有帮助,更确切的说,有没有误导读者,我可不想被扣上“引读者误入歧途”的帽子,刚上市那会儿是天天去当当、互动、豆瓣和卓越上溜达,看评论,回答问题,然后发现自己的好评率一直居高不下,悬着的心落地了。现在好评率都在95%以上,至少有一大半的读者觉得这本书还成,简单、易懂,不乏幽默,让技术充满了“人”的味道,而不是冷冰冰的“True”或“False”。我很喜欢卡内基《人性的弱点》(《Dale Carnegie's Lifetime Plan for Success》)中的一句话“Merely stating a truth isn’t enough.The truth has to be made vivid,interesting,dramatic.You have to use showmanship”,很欣赏这句话,真理不仅仅是要表达出来,而且还要有技巧的表达出来,以便能够更吸引人,更动听,我经常也使用一些比喻和类比,前段时间同事问我,“为什么需要单元测试”,我就跟他说“你在说话的时候,为什么还要用耳朵听自己的声音,你自己大脑都知道自己说什么了,要耳朵听着干什么?完全没必要嘛!,那为什么呢?因为你希望你说出的话是真实的表达你思维的,没有歧义和错误,那就是要求出口的话即是无错的,那怎么做到呢?使用回馈机制,由你自己的耳朵来反馈到底有没有错,单元测试也是一样,就是起到无错编码的作用,用单元测试校验代码是否符合你的意图,确保代码无技术缺陷,——有业务歧义那就没招了,那不是单元测试的范畴。”通过这样的一个解释,我确信同事对单元测试有了自己的见解,也不会再追问如果进行单元测试了,——既然如此重要那就自行寻找如何做。我在《设计模式之禅》中大量使用了这种方式,23种设计模式就这么多,就这么多的素材,如何做到有声有色就看怎么编排故事了,怎么让读者觉得“这故事有意思,值得一看”这就足亦!从结果上看,这么多的读者欣赏《设计模式之禅》,也让我看到这种“讲故事”(准确的讲 是“讲技术故事”)方式很受欢迎嘛,套有偶像的一句话“我喜欢”,说这话的时候注意周星星的腔调哦!

 

     这段时间在看有关批判性思维Critical Thinking,其中在批判“我的更好”(mine is better)这种思想,我也觉得也是,《设计模式之禅》肯定不是“更好的”,至少GOF设计模式的鼻祖还在嘛,而且还有很多很好的关于设计模式的书,这里不做介绍,喜欢的话自己到baidugoogle一下呗。

分享到:
评论
5 楼 xx23x 2017-07-24  
你好,我看这题帖子已经很久远了,看书的时候遇到一点疑问,找不到在哪里交流,只好试试在这了。在建造者模式那一章里面,您提供的builder类里面,有一个Carmodel的变量,最后的例子中,生成100,1000个车辆模型,,但是从代码上来看,其实这都是同一个carmodel实例, 我的疑问就是这样合适吗?
4 楼 haha0832 2014-05-06  
您好:
       最近很高兴发现这本好书,并开始认真阅读,但对其中的建议3中三元运算符类型转换存在一点疑惑,其中所说的第3、4个转换规则中数字和直接量数字的区别是什么,我写了一个测试,运行结果如下,不太明白,希望您指导一下:

public static void main(String[] args) {
      char ch = 'a';
      int i = 10;
      final int aa = 12;
      final byte bb = 12;
      final short cc = 12;
      final long dd = 12;
      final int ee = 65536;
     
      System.out.println(false?aa:ch);
      System.out.println(false?bb:ch);
      System.out.println(false?cc:ch);
      System.out.println(false?dd:ch);
      System.out.println(false?ee:ch);
  }

运行结果:
a
97
97
97
97
3 楼 xnxqs 2011-07-28  
恭喜了,已经看到最后几章了。例子通俗易懂,你把不简单的东西讲到简单,这就是你的不简单。顶一个。另外我在阅读过程中也发现了一些问题(不要骂偶,偶读的电子版,复制代码起来方便啊。。。)。一会发到你另一个文章里面,有空麻烦回一下。
2 楼 linux1689 2010-12-13  
http://www.iteye.com/topic/840266
1 楼 linux1689 2010-12-13  
JE上一位网友晒了一下他2010年的书单,列了20本经典书,大部分都是国外大师的作品,这本书作为原创图书有幸被列其中,哈哈。

相关推荐

Global site tag (gtag.js) - Google Analytics