代码大全

(美)Steve McConnell

出版时间

2008-01-01

ISBN

9787121033629

评分

★★★★★
书籍介绍
这不像一本教你写代码的书,而是一本教你如何面对软件构建中那个永恒难题的著作——复杂度。全书反复强调一个近乎偏执的判断:软件开发中任何其他技术目标都不如管理复杂度重要。它把“需求随时会变”“问题只有被解决后才能被定义”当作不可动摇的前提,而非需要克服的意外,由此推导出缺陷发现要尽早、设计是启发而非算法、代码风格应当像排版一样可被审视。读者普遍反馈,它适合有一定经验、踩过设计坑的人反复翻查,而非初学者的入门向导。它不提供速成技巧,而是帮你建立一套判断框架:在需求动荡、问题“险恶”的现实里,如何做出经得起推敲的决策。
AI导读
核心看点
  • 软件构建核心在于管理复杂度
  • 覆盖从需求分析到代码实现的完整流程
  • 提供变量命名、循环等具体最佳实践
读者共识
  • 软件工程领域的经典百科全书
  • 越早阅读对职业生涯帮助越大
  • 值得反复阅读并作为案头常备书
精彩摘录
  • "设计是一个启发式过程 隐喻是启示而不是算法 典型情况下需求会有多少改动?IBM和其他公司的研究发现,平均水平的项目在开发过程中,需求会有25%的变化(Boehm 1981,Jones 1994,Jones 2000)。在典型的项目中,需求变更导致的返工占到返工总量的75%到85%(Leffingwell 1997,Wiegers 2003)。 注意项目的商业案例:有些需求作为功能特色来看是不错的想法,但是当你评估“增加的商业价值”时就会觉得它是个糟透了的主意。 一个好的项目规划者,应能尽早清楚项目中的主要风险,以使大部分工作能平稳进行。"
  • "发现错误要尽可能接近引入错误的时间,缺陷在软件食物链里面呆的时间越长,它对食物链的后级造成的损害就越严重 “问题定义”只定义了“问题是什么”,而不涉及任何可能的解决方案,应在需求分析之前,而需求分析是对所定义问题的深入调查,应该用客户语言来写,从客户角度来描述问题"
  • "Sapir-Whorf假说是,你思考的能力取决于你是否知道能够表达该思想的词汇。如果你不知道这些词汇,就无法表达出这种思想,甚至可能不能形成这种思想(Whorf 1956)。"
  • "“险恶的(wicked)”问题就是那种只有通过解决或部分解决才能被明确的问题(1973)。这个看似矛盾的定义其实是在暗示说,你必须首先把这个问题“解决”一遍以便能够明确地定义它,然后再次解决该问题,从而形成一个可执行的方案。这一过程已经如影随形地在软件开发中存在数十年了(Peters and Tripp 1976)"
  • "稳定的需求是软件开发的圣杯。"
  • "Design Is a Wicked Problem Horst Rittel and Melvin Webber defined a "wicked" problem as one that could be clearly defined only by solving it, or by solving part of it(1973)."
  • "Design Is a Sloppy Process (Even If it Produces a Tidy Result)"
  • "Software developers tend to like our answers cut and dried: “Do A, B, and C, and X, Y, Z will follow every time.” We take pride in learning arcane sets of steps that produce desired effects, and we become annoyed when instructions don’t work as advertised. This desire for deterministic behavior is h"
用户评论
经典
最适合给有一些开发经验的新手看,一本百科全书,除了个别章节以外,是广而浅的,对于高手来说收藏一本,偶尔翻翻查缺补漏也不错。翻译的非常,非常好
我知道啊
非常厚的巨著,包括许多有效的代码片段。
温故知新
陆陆续续把感兴趣的章节都看了,事无巨细的讲解了软件开发的方方面面。
程序员必读
豆瓣上这种书也有啊,所以说,只要是读书就是文艺青年喽,不管你读的是什么书,只要读书,就是在搞文艺,哪怕你读的是《物种的起源》呢。
巨细靡遗反而很难把握重点。
我真的不知道这本书的评分是怎么刷上去的,我纯粹是因为这本书的评分才去读这本书的。但是,在我试读几章后,我发现这书的内容既不适合初学者,更不适合有经验的开发者。对于初学者,这本书的讲的太啰嗦,本来一句话就可以说的很明白的事情,作者写了个长篇大段,非常浪费初学者的时间。对于有经验的开发人员,这本书的有值得借鉴的经验就更少了,要么经验过时,要么所谓的经验早就被人用烂,没啥深度可言!
求书
收藏