1. 首页
  2. 编程语言
  3. Web开发
  4. 凌波微步 软件开发警戒案例集(中文高清版)

凌波微步 软件开发警戒案例集(中文高清版)

上传者: 2020-07-30 03:03:43上传 PDF文件 11.39MB 热度 13次
第一部分 风格篇 第1章 从注释开始 第2章 天书奇谈 第3章 存在的就是合理的? 第4章 编译和编译选项 第二部分 编码篇 第5章 goto,又见goto 第6章 宏定义,从"断言"谈起 第7章 内存不够用啦 第8章 崩溃时刻2 第9章 体验"异常处理" 第10章 属性还是方法? 第11章 速度问题 第12章 多线程 第13章 图形用户界面和多线程 第三部分 版本管理篇 第14章 dll地狱 第15章"时空"变幻版本演化难题 第16章 版本管理:两种协作方式 第四部分 测试篇 .第17章 两道概率题 第18章 三角形判定 第19章 巴蒂斯图塔之蒸发凌波微步软件开发警戒案例集王咏刚周虹著本书附盘可从本馆主页http://lib.szueducn/上由“馆藏检索”该书详细信息后下载也可到视听部复制京】新登字158号内容本书是面向程序员的“天龙八部”,真正的编程高手是在千锺简百炼之后诞生的。其中的酸酣苦辣均凝结在本书的字里行间,尤为珍贵的是文中的“秘笈”将会是无名小卒脱胎换骨的利刃,希介纽本书能让程序员体味到一个编程的“天高云淡的最高境界版杉权所有,翻印必究本书封面贴有清华大学出版社激光防伪标签,无标签者不得销售书名:凌波微步软件开发警戒案例集作者:王咏刚虹责任编辑:丁岭出版者:清华大学出版社(北京清华大学学研大厦,邮编100084)Tww. tup. tsinghua. edu. cn印刷者:世界知识印刷厂发行者:新华书店总店北京发行所开本:787×9601/16印张:26,25字数:476千字版次:2002年11月第1版2002年11月第1次印刷书号:ISBN79006143-68-0定价:42.00元代自序)我一直愚蠡地认为,程序员的工作与艺术家的工作有着某些共通之处。我向上帝保证我曾亲眼肴到中关村一个使用国作恧时时编写代码的程序员,在即将结束第一百零一次测讽之际,孤身擎网线、汨眼眺朝阳,麟躇满志地吟谲:“我已经是笫一百万次迎接羟驗的现实,在灵魂的冾坊里未经上帝创造的人类的良知。”这经历使我毫不犹橡地从乔俨斯老头儿那凡攫取了写作这篇短文的灵感——感谢二十世纪最伟大的槎序员唐姆斯·乔伊斯,慼谢他在上个世纪初就创作出了《青年艺术家的肖像》这样精彩的“软件”。毕业之前我在公司挟受面试,一位炫的经狸用非常严肃的语调河我如何看待程序员的工作。我闭上眠晴抱着屑膀苦苦思隶,样子像只挖不岀明萝卜的鼹鼠。然后我睁开眼,故作镇定,强打精神,告诉考宫我觉得程序员的工作是一舯创造性的工作就馋画家作曲家钢琴家歌唱家舞蹈家小说家诗人头工編剧导演化妆师捋头艺未家的工作一样,我觉得作为一个程序员一要寮智二要幽默三要诙娑四要打趣五要搞笑,我还觉得……到现在我也没有想遠为什么公司可以容忍我做程序员的工作做到现在,反正我的序員生涯是从这位汤经理的面前开始的从严格意义上说,我在公司这凡年少说也写足了三十万行程序。乜许有一天我可以把这苎大大小小的可用的癍疫的高速的低效的人工智能的人工白痴的程序都打印出来,收編成册,堆积成山,体会一下箸述爭身的成就感,然后用王朔的口气跟记者说我写着写彝手都写残了可是还得写没办法谁让我是程序贡呢。我老是问自己老写栏序烦不烦呀,我总也找不到莟案也总没停止写程序;直到昨天我后到海德格尔θ说“时间性使得生存性、亨实性和沉沦的统一成为可能并苁根本上构成烦的整体结构”,我这才知遁原来“顼”也和桯序一样是有结构的,也要经过需求分祈概要设计详細设计并且要着时间的延愿才能烦得起来。这么说来程序黄的工作除了艺术性之外还能现出平点哲学性来,这么说来我在有生之年或许还可以攒出一部哲学书叫做《存在与烦》我相信有一天硅谷的老板会亲自到复旦北大北师大南大山大淅大的中文系高薪聘请会写诗的程序員,因为写程序的终极真理和写诗基本类似。如采一个人没办法弄明白为什么“仄仄平平仄仄平”的下白非要对“平平仄仄仄平平”,那么他也一定弄不明白为什么环只能嵌套不能交叉为什么用跳转语句就会得到“意大利面”。套用静安宄生的话讲就是:“程序以境界为最上。有境界則自成高格,自有名勺。”这种道理很难用一两句诟解释清楚,非要讲的话我们可以从华山缶掌门里的“以气御剑”学起。至少我们知蓮,会编程序和会编好的程序是两码事,这就好比写“我的所愛在白腰”和写“枝上柳绵吹又少”是两码事一样我很自豪我是一个青年栏序员(“青年”的齒思是指程序贞的年龄结构与职业足球运动员大致榈仿),我最为得意的一幅自画缭出现在加菲貓的连环画里加菲猫腆着肚子拿起一件黑白间杂衫说:“听说竽竖条纹的衣服可以盛锷苗条一些。”……加菲猫照着競子说:“可现在我就像个大西瓜2002年3月本文初创作于2们t曾忖昼在公司妤內部通讯上,尤次收入本书,仵者对个卵宇句作了调茔。写作这个大概花了半年左右的时间,但我最早对写作这样的一本书充满兴趣劫是在两年以前。那时候,我参与的一个软件开发项日正处在经費和进度一样紧、3ug和功能一样多的关键阶段,项目組的所有成员都在各户现场不分量夜地调试软什很多人在这个时候都隐约有一种想法,觉得稆序只在真正的开发现场,在层出不穷的软件故障面前,才能彻底领悟软件开发中最实用的技巧和最基本的原理。随后,我参加了二系列由著名的培训和咨询公司组织的有关软件开发的培训与交流活动在这些活动里,培训专家们匾烈推荐使用案例分析的方法来讲解软件开发的原鉀和技巧,以帮助叁与者在直魂的开发案例成者编程实验面前,用最短的时间体会到平时只们在开发现场才能体会到的东西就这样,写作本主要由案例,将别是在实际的软件亓发中曾经出现过的富含经验教训的案例组成的书望越来越强烈地唆引者我,我也在后来的升发实践車特别注意了对类似素材的收集和记求不过,真到写作的时俠就又是另外一回事儿了有屿人天生就是驾裂语言的高,设定了∏标之后,气出来的东西就八九不离(子;另一些人也许有创作的热情和独特的想法、可受水平所限,实际写出来的文字就和最初的构思相去甚远了。依经验和功力而论,我当然属于后-种人,所以我总觉得实际形成文的这部书并不是我当初想象的那个东西。首先,按照我当初的设想,中的案例都应当是我亲眼所见的事实,可结果是,在中所有的案例甲、经眼的事实大约占一,由事实引发的构思还有一些纯粹杜撰的也有几条,还有几条的思路则是从经典的著作或者网络资源里佔鉴的。其次,我希塱书中营造的是·种纯粹的实验室氛围、就像我们化学课上摆弄一大堆玻璃器Ⅶ那样,大家完全在实践中体会开发的真谛,可写作的过程中,我却不得不在许多地方摆出了一副理论家的讨厌面孔,喋喋不休地介绍知识体系—这“然是由于我的想象力太差,不能将抽象的东西隐藏在具伓的、有趣的事实中宦讲的缘故了。但写成了总是好的,虽然这不见得惹人喜欢,似只要它能帮助人家对实际的软件开发过程有个粗疏的概念,大致知遆-个程序员在经过了学校和編程教科书的训练以后,还要学习哪些东西才能存项目組里有效地工作,我就非常满意了好了,还是先简单罗列一下我写作前对本书的构思吧(凭着这些内容,你可以史容易地发现这本书里与构思貌合神离的东西按说钦件开发的过程也是如此,很少有开发定成的软件与最初的需求和设计百分之百吻合的。我们可以把这些东西当作一种憾但愿我的下一本能妳补这些缺憾准构思→:这本书不是程序设计语言的教科书,这本1不是算法大全,这木书不是代码集成,这木书不是开发T具指南,这本书也不是钕件T程文摘。构思二;这本书是开发过程中原始经验的罗列、这本书是软件开发的警戒事集,这本书是错误的开发行为和正确的开发行为的汇总,这本书是检验我们开发经验是否卡宫、开发技术是个熟练的实验室*构思三:这本书无法告诉我们如何开发软件,但它可以芹诉我们如何开发好的软件本书的体例相对简单,基本每章讨论个主题,每章都有几平完全相同的结构1.问题引入:升门见山地提出问题,包插示例程、错误现象、不的看法或者有争论的话题等等此题外话:为了让大家在阅读每章的案例之后能有一个充裕的思考时间,我在这里补充了些与核心话题无关的内容这常常是一些读起来相对轻松的文字,但你也许能在里面发现些有价值的东3.案例分析对每章案例问题的真正展开,般包括详细的讨论、坦论上的展开以及示例代仍等内容。4.补充说明:补充些案例分析中没有深入涉及的内容,或者与本章话题相关的其他领域的知总结一下:巾上题总结出的一两句话不过是一种加深大家印象的手段罢了对这一本书來说,人家没有必要非按順序阅读,有时候,选择感的章节进行跳跃式的阅读可能是更们效的方法。秒中各章讨论的话题分别是从荘释开始—一注释是写程序的第一门学问。注释虽说简单,它的作用可不能小,写好注释是写好程序的第一步2.天书奇谈——如果程序古怪到何人都难以理解,这也算得上是种另炎的风格吗?好程序的风袼或许有许多种,不同风格之间也没有高下之分,可让人看不懂的代码却是万万配不上凤格二宇的存在的就是合理序设计语言的语法往往会容忍一些奇的代码,这一章就从这些奇异、有趣的代码开始谈起编译和编译选项也可以在编译时体现,对特编译选项的使用有时候是的goto-—goto不仅仅是程序设计语言里的一个符号,goto蕴涵了太多和软件开发有关的话题,有老套的,有新鲜的,说主夜也说不完6.宏定义,从“断言”谈起——C语言、C++语言的宏定义,用得好了成许是编程的利器,用得不好说不定就成了祸害。7.内存不够用啦如何编写不含内存港漏的程序,如避免计算机报出内存不足的错误—这章讨论与内存相关的话题8.崩渍时刻2程序中的内存问题除了可以引起内存不足以外还有可能让程序崩溃,让系统瘫痪。这么可怕的事情是怎么发生的呢?体验“异常处理”--异常处理是面向对象的开发中最常用的种“防微杜渐”的手段,不同的编程语言对异常处理有各不相词的实现方式。用好异常处理这项功能对程序员来说再重要不过了10.属性还是方法?向对象的方法和结构化方法的区别究竞在哪里?我们将从面向对象里的两个基本概念——属性和方法谈起I.速度问题两个和运行速度有关的小程序我们的任务是让它]运行得更快。在这一章里,大家甚至可以看到编详程序在编译时,是如佃对机器语代码进行速度优化的12.多线程—多任务是编程领域最难的课题之一,多线程又是多任务编程里最难掌握的一种我们的实验程序模拟了一个多线程环境下共享冲突的例子13.图形用户界面和多线程—用户界面下的多线程比单纯的没有界面的多线程要有趣得多。有界面的多线程代码出现错误时错误效果会立即反峡到界面上米,肴得见,摸得着,不山得我们不好好改进14.DL地狱——和版本管理亻关的第一个例子。这-章讲了不少DLL地狱问题带给我们的苦恼,也讲了不少DL以及类似DLL的组件复用技术带给我们的炊乐15.“时穴”变么:版本演化难题—“时空”是一个软件的名字我们将在这一章从配置管理的角度考察“时空”软件的版本演化问题。16.版本管理:两种协作方式—项日组使用自动化的配置答理具进行版本控制时,有的项目组选择“独占型”的协作方式,有的则选择“丌放型”的协作方式,到底哪·种更好些呢7.两道概率题—这一章讨论测试基本原理,其中借用了全面质量管理理论的几个概念18.角形判定—继续讨论测试的基本原理,不过更多地偏重测试包和测试川例的设19.巴蒂斯图峪之蒸发密令——利用一个和球有关的案例程序讨5.论在面向对象软件的测试中,有别于结杨化软件测试的荇千问题20.二进制加法器:基于模型的测试一-好的测试都是基于模型的这有一个不错的例f告诉我们如何区分不同的测试模型如何针对模型设计测试用例I!.什么是“排序”?—在实际的软件开发,需求、设计、编码的脱节最容易导致开发失败。我们将在个排序小程序甲,看到类似的情22.像门广网站一样的界而一一用户界面的设计是一富有挑战性的工作我们在界面设计上付出的劳动,往往直接决定了用户是否接受和喜欢我们开发的软件23.糟糕的而向对象设计——如果单单使用一种面向对象的话'就算在从事向对象的设计和开发那么,我们也就用不若学习什么面向对象的论,用不者了解什么UML24.最高境界功的最高境界是“无招胜招”,软件开发同样如此。好的程序员设计的软件不但编码量小,而使用的技术也最简单25.附录A:自已动于开发测试工具—我在这个附求中介绍了一个我自己编写的多线程压力测试软什除了该软件的设计思路及源代码可以
用户评论
码姐姐匿名网友 2020-07-30 03:03:43

大神推荐的要好好读一读

码姐姐匿名网友 2020-07-30 03:03:44

还可以吧看看

码姐姐匿名网友 2020-07-30 03:03:44

质量一般,内容一般

码姐姐匿名网友 2020-07-30 03:03:44

不够清晰,看不清楚啊

码姐姐匿名网友 2020-07-30 03:03:44

扫描质量一般,不太清晰,但是书很好,最早知道是从vczh的博文里知道的

码姐姐匿名网友 2020-07-30 03:03:44

有点模糊啊

码姐姐匿名网友 2020-07-30 03:03:45

扫描质量不好。

码姐姐匿名网友 2020-07-30 03:03:45

不清晰,中文还好,代码看起来太费劲了。

码姐姐匿名网友 2020-07-30 03:03:45

好书但不够清晰

码姐姐匿名网友 2020-07-30 03:03:45

内容不错,但是不够清晰