`
hatedance
  • 浏览: 59447 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论

CodeComplete读后感之隐喻篇

阅读更多
本来我是不打算看这个《代码大全》的,同理,也不想看《effective java》的。总觉得我的目标是做个架构师,做设计。这2本书显然是以coder为对象的。
不知道为什么,我还是决定拿起来随便看看。才看了个头,就觉得很值了。

metaphor,直译就是隐喻。说实话,咱们中文里似乎以前不怎么用这个词,还是译成比喻比较通俗。作者真的是看过很多书,他例举了很多其他大师对软件开发的比喻:
引用

Fred Brooks says that writing software is like farming, hunting
werewolves, or drowning with dinosaurs in a tar pit (1995). David Gries says it’s a science (1981). Donald Knuth says it’s an art (1998). Watts Humphrey says it’s a process (1989). P.J. Plauger and Kent Beck say it’s like driving a car (Plauger 1993, Beck 2000). Alistair Cockburn says it’s a game (2001). Eric Raymond says it’s like a bazaar (2000). Paul Heckel says it’s like filming Snow White and the Seven Dwarfs (1994).

种田,打猎,艺术,过程,开车,游戏,买卖,白雪公主和7个小矮人,以上海阔天空的比喻都对我不起任何共鸣和产生实质帮助。

接着作者说出了我认为对我最有价值的比喻:建筑。
太对了,开发软件跟建造房子太相像了!!!
理由如下:
1) 所谓的design pattern是源自一位建筑师的思想;
2) 软件开发里用到的词汇:build,construction,architecture,...,源自建筑领域;
3) 造狗屋和造摩天大楼的区别,非常类似开发小软件和大规模软件的区别;
...
一个好的比喻,能让初学者事半功倍,迅速理解软件开发的本质,能在发生问题时循着正确的方向迅速找到答案。我自己之前对软件开发的比喻是雕塑,绘画,类似Donald Knuth的art.但现在发现,建筑是目前为止最好的metaphor.
分享到:
评论
34 楼 hatedance 2009-07-01  
elinor 写道
我才看了一点点.敢问lz是看的英文原版的吗?

现在看了些英文原版的之后,才发现,中国有些书翻译的确实不好.

是的。最近几年学英语的努力大过学技术本身了。
33 楼 elinor 2009-06-30  
我才看了一点点.敢问lz是看的英文原版的吗?

现在看了些英文原版的之后,才发现,中国有些书翻译的确实不好.
32 楼 surpass 2009-06-28  
treblesoftware 写道
架构师来自最好的程序员。


名词也不重要,软件行业起步比较晚,COPY别的行业的名词也算很正常哦。
如果架构师连一个方法都写不好,连一个类都写的不能重构,那还怎么架构呢?
就跟经济学一样,先学微观,在学宏观。只有微观好了,才能步全大局呀。对吧?

完全同意,我就吃这样的所谓架构师的黄连。还在水深火热中的人。。。。。
31 楼 treblesoftware 2009-06-27  
架构师来自最好的程序员。


名词也不重要,软件行业起步比较晚,COPY别的行业的名词也算很正常哦。
如果架构师连一个方法都写不好,连一个类都写的不能重构,那还怎么架构呢?
就跟经济学一样,先学微观,在学宏观。只有微观好了,才能步全大局呀。对吧?
30 楼 happyforever82 2009-06-25  
在"造房子"的过程中, 你可以很直观的看到 房子现在是什么样了.
而"写软件"的过程中, 虽然你可以写报告, 看代码, 单元测试, 但没到可以交出一份差不多的项目之前, 谁也不知道最终它是个什么情况.

如果"造房子"的过程中, 需要 添加/修改/删除 掉一些东西, 拿个模型一比就知道会造成哪些后果.
而"写软件"的时候...拿到或者修改一些东西所"可能"带来的后果...这个就不用我说了.
29 楼 fkpwolf 2009-06-25  
维特根斯坦说过,好的隐喻胜过千言万语(大概如此,原话忘了)

null=sex 写道
CodeComplete这本书是我在写代码最疯狂的时候看完的,共鸣感真得很大,至于提到的隐喻,根本没留意到,至今还在推荐这本书给新人看。
DesignPattern这本书是做设计最多的时候看的,看完就把书扔掉了,基本上和江太上皇的三个代表一样的忽悠,通篇的比喻和毫无说服力的设计策略只能说明作者是IT届的余秋雨。

这是一个充满邪恶,欺骗,异常的外部世界,只有充满质疑,理想和自信的人才能真正成为软件架构师,一根筋(单线程)的脑袋,还是适合去炒股票/关系型的商业交易专家


说的好啊

28 楼 null=sex 2009-06-25  
CodeComplete这本书是我在写代码最疯狂的时候看完的,共鸣感真得很大,至于提到的隐喻,根本没留意到,至今还在推荐这本书给新人看。
DesignPattern这本书是做设计最多的时候看的,看完就把书扔掉了,基本上和江太上皇的三个代表一样的忽悠,通篇的比喻和毫无说服力的设计策略只能说明作者是IT届的余秋雨。

这是一个充满邪恶,欺骗,异常的外部世界,只有充满质疑,理想和自信的人才能真正成为软件架构师,一根筋(单线程)的脑袋,还是适合去炒股票/关系型的商业交易专家
27 楼 tuti 2009-06-25  
phpxer 写道
tuti 写道

Alistair Cockburn的《敏捷软件开发》也有一些隐喻,传播还不太广,非常富有洞见,有兴趣可以去看看那本书的几篇附录。

当楼主觉得"建筑"隐喻的不足,并能发展出属于个人的“软件开发”隐喻的时候,也就是楼主更为精进的时候。


对《敏捷软件开发》中的那些附录,也曾看过,但是不曾记得有什么印象很深刻的隐喻。但是《代码大全》中有关建筑的隐喻却印象很深刻。


再去看看
26 楼 phpxer 2009-06-24  
tuti 写道

Alistair Cockburn的《敏捷软件开发》也有一些隐喻,传播还不太广,非常富有洞见,有兴趣可以去看看那本书的几篇附录。

当楼主觉得"建筑"隐喻的不足,并能发展出属于个人的“软件开发”隐喻的时候,也就是楼主更为精进的时候。


对《敏捷软件开发》中的那些附录,也曾看过,但是不曾记得有什么印象很深刻的隐喻。但是《代码大全》中有关建筑的隐喻却印象很深刻。
25 楼 night_stalker 2009-06-24  
文学点缀一下可以获得欢乐的效果 …… 但是没啥实质内容。
24 楼 hatedance 2009-06-24  
发现我很喜欢CC的作者的比喻,比如:
1 需求就像水,只有冻结以后才容易在其上面构建东西。
2 看没有文档/注释的代码,就像看没有字幕的外语电影。(我自己乱译的,译得不好)

不知道有多少人跟我一样,喜欢用隐喻/比喻去理解软件?
23 楼 抛出异常的爱 2009-06-24  
不喜欢隐喻........
因为隐喻只对外国人有用
他们用的专业名词太长太难记


我们用的是中文.
本身选词已经含有意义了
望文生意就可以了...不要乱用隐喻


另造狗窝与造软件是本质上不同的活计
用建筑业的名词主要还是历史上的失误
千万不要用建筑学或机械工程去套软件工程

根本上没意义...
常说的没有银弹也是指软件不能用已知的工程学方式来管理.
22 楼 phpxer 2009-06-24  
我读了很多好书,但其实理解得不好。可能跟读得太多太快太随意有关系。

经验不足可能也是其中一个原因。
21 楼 lg_techie 2009-06-23  
当时看《代码大全II》时候,还专门查了什么隐喻,其实我们平时在开发中,在与客户的沟通交流过程中很多时候都用到了隐喻!!
20 楼 tuti 2009-06-23  
hatedance 写道

总觉得我的目标是做个架构师,做设计。
...
现在发现,建筑是目前为止最好的metaphor.


我想这就是为什么楼主觉得这个隐喻好的原因。

《代码大全》的隐喻都比较老,大家基本都知道。
Alistair Cockburn的《敏捷软件开发》也有一些隐喻,传播还不太广,非常富有洞见,有兴趣可以去看看那本书的几篇附录。

当楼主觉得"建筑"隐喻的不足,并能发展出属于个人的“软件开发”隐喻的时候,也就是楼主更为精进的时候。
19 楼 iaimstar 2009-06-23  
hatedance 写道
ls批评得对。我没看过effective java,也没看过effctive c++。现在一年平均都看不到3本书。最近几年主要看的书也就是DDD和martin fowler的几本书而已。代码大全也未必今年能坚持读完。

PS,虽然我混得不算太差,但很“7年砖工”是个好id,我要定了。


别听别人瞎扯扯
不同的人读书的体会不同,没写过几行代码的读了设计模式也是白读,当然某些特定天才除外(确实见过几个变态)
更加丰富的阅历和经验后,读书的感觉是不同的,即便是读过的书回头再看理解也不一样,读书不在早晚,只要读了后有收获,读这个书就不晚。

有的时候读书,啃不动还继续啃,啃完完全没有感觉,那啃的再早也没有用
18 楼 logicgate 2009-06-23  
写代码只能慢慢让你的能力产生量变,多读好书才能让你更快的质变,完成从砖工到建筑师的飞跃。
17 楼 hatedance 2009-06-22  
ls批评得对。我没看过effective java,也没看过effctive c++。现在一年平均都看不到3本书。最近几年主要看的书也就是DDD和martin fowler的几本书而已。代码大全也未必今年能坚持读完。

PS,虽然我混得不算太差,但很“7年砖工”是个好id,我要定了。
16 楼 whaosoft 2009-06-22  
[quote="hatedance]
接着作者说出了我认为对我最有价值的比喻:建筑。
太对了,开发软件跟建造房子太相像了!!!
理由如下:
1) 所谓的design pattern是源自一位建筑师的思想;
2) 软件开发里用到的词汇:build,construction,architecture,...,源自建筑领域;
3) 造狗屋和造摩天大楼的区别,非常类似开发小软件和大规模软件的区别;
...
一个好的比喻,能让初学者事半功倍,迅速理解软件开发的本质,能在发生问题时循着正确的方向迅速找到答案。我自己之前对软件开发的比喻是雕塑,绘画,类似Donald Knuth的art.但现在发现,建筑是目前为止最好的metaphor.[/

-----------------------------------------
给你鼓个掌
15 楼 徐风子 2009-06-21  
hatedance 写道
icefishc 写道
又一个想直接做架构的。
做Java真危险, 要是碰上这样的架构师岂不麻烦。

想直接做架构?我已经搞软件搞了7年了,老人一个。

7年了,真的不应该才看《代码大全》的,而且没看过《effective java》的。

相关推荐

    codecomplete代码大全 codecomplete代码大全 codecomplete代码大全

    codecomplete代码大全 codecomplete代码大全 codecomplete代码大全

    code complete 英文第二版,PDF格式

    标题中提到的“Code Complete 英文第二版,PDF格式”指的是Steve McConnell编著的软件开发领域经典著作《代码大全》的英文第二版的电子书版本。这部书被广泛认为是软件工程和编程实践方面的权威指导书,介绍了编写高...

    code complete2.mobi

    code complete2.mobi

    Code Complete (2nd)

    ### 《Code Complete (2nd)》核心知识点详解 #### 一、书籍概览与适用对象 《Code Complete (2nd)》是一本由Steven C. McConnell编写的经典软件工程书籍,出版于2004年。该书是微软员工的一门必读书籍,旨在帮助...

    code complete(2nd Edition)

    《Code Complete(第二版)》是一本在软件开发领域内被广泛推崇的经典之作,由史蒂文·麦克康奈尔(Steven C. McConnell)撰写。本书深入探讨了软件构建过程中的核心理念、实用技巧和最佳实践,对于软件工程师、项目...

    Code Complete

    ### Code Complete:软件构造的最佳实践 #### 书籍概述 《Code Complete》(代码大全)第二版是由Steve McConnell编写的经典著作,由Microsoft Press出版于2004年6月9日,ISBN为0-7356-1967-0,全书共960页。这...

    code complete 2 english

    根据提供的文件内容,以下是关于《Code Complete 第二版》的相关知识点,这本书由Steven C. McConnell所著。 1. 优秀软件工程实践与普遍实践之间的差距非常大,在所有工程学科中可能是最宽的。这一点强调了技术知识...

    Code Complete 代码完全英文原版

    Code Complete 2nd edition. 代码完全英文原版第二版

    Code Complete代码大全

    ( Code Complete(代码大全)中文第二版。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

    代码大全 Code Complete 中文版 软件开发人员必备工具书

    代码大全 Code Complete 中文版 软件开发人员必备工具书

    Code Complete 代码大全2

    不是代码库 只是中译为代码大全 英文书名叫Code Complete 这是讲软件方面的书 很经典

    code complete 中提到的各个checklist

    ### Code Complete 中提到的各个Checklist #### 一、概述 《Code Complete》是一本经典的软件工程书籍,由Steven C. McConnell撰写。本书通过一系列详尽的检查清单(checklists),帮助开发者在软件生命周期的不同...

    Code Complete 2nd(代码大全 英文版)

    代码大全 英文版,code complete second edition

    Code Complete 2nd_代码大全_completecode_CodeComplete_

    Code complete 2 Edition

    Code Complete第二版(中文版)2/8

    Code Complete第二版(中文版),共8部分。下载完全后解压即可

    代码大全 ( Code Complete )

    《代码大全》的英文版名称是 Code Complete: A Practical Handbook of Software Construction。 它获得1993年美国软件开发杂志Jolt大奖,被美国包括MIT在内的十多所大学作为计算机软件学科的教材。 <br>...

Global site tag (gtag.js) - Google Analytics