当前位置:澳门新葡亰网站所有平台 > 网址大全 > 编写卓越的代码

编写卓越的代码

文章作者:网址大全 上传时间:2019-10-18

正文转自:

 

编制程序匠艺——编写杰出的代码 

 

[美]Pete Goodliffe(皮特.周其明弗)著

韩江 译

 

再序

那本书能够重印,本人就印证了它的股票总市值获得了读者的确定,在今时前些天,已属精确。所以时隔八年,我即使曾经不在原本的工作岗位上,也还愿意再就那本书说几句。

那本书讲了哪些呢?其实也没怎么屠龙秘笈,无非照旧关于软件编码的一对常备的大实话,一些翔实的经验之谈。它的助益,一是比较完整,二是现实而又明朗,三是朴实。总的来讲,作者感觉那本书相比好地蕴含了软件开垦个中真正有效的东西,何况不分包花哨的笑话。那是保护的。

软件开拓行业还平素不完全走出青春期,离成熟还远。行当跟人一样,所谓成熟,正是说试过了成都百货上千主张,狂也狂过了,疯也疯过了,伤心欲绝,还淳反古的那么一种情景。软件开拓那个行业,给狂想提供了极其大的舞台。各种技师都愿意形成大师,而高手如同快要体现在千头万绪酷炫的代码、框架、程序库下边,所以各样看上去很酷的主张不可计数,技师们周期性地为新型的前卫词汇而痴迷与疯狂。可是那样经过了极短的时间的施行,很四个人实在依然看驾驭了,大相当多光彩夺目绝技最终身败名裂,尘归尘土归土,留下来经久不衰的,仍然那么些低调、朴实、透明的技巧。那本书里描述的,大许多属于长时间沉淀结晶出来的事物,所以值得信任。

几年前,作者在场多个才能会议,壹个人发言人是程序员出身的Smart投资者,他在评价另三个靠能力成功的小青少年时说,这三个某某某,其实手艺非常差劲,可是他怎么成功?因为她做出了第顶尖的制品,况且是个商业贸易天才,所以中标了。很风趣的一段话,做出了头等的出品,技艺水平还能够叫“平庸”吗?软件开辟行业有一个专程隆重並且旁若无人的园半夏化,大很多开垦者都在圈子里不亦今日头条,不是拿成果,而是拿点子来比高下,把大部分精力用来投其所好同行。可是小编倡导开采者常常站在圈子外面审视本人,那样会比较轻便保障头脑的清醒。归根到底,社会或然以你是不是能交到高素质的、易于维护和强盛的出品来商议您的技巧和程度,并且给予你对号入座的对待。所以开拓者到底应该如何规划和煦的腾飞路线,其实是值得反思的。

自己以为那本书好就幸而少之又少花花架子,都以真真切切的好东西。所以纵然是三年过后,四年现在,也还值得再读。

孟  岩      

二〇一二年7月于首都

推荐序

新闻行业大致是开放水平最高的家产,其发展之快,让身处当中的我们既以为到欢腾和感动,也平常纠葛和惊惶。音信手艺的扭转太快、太凶猛,一切都在神速创新当中,作为手艺职员,我们明天熟练何况赖以安家乐业的东西,比一点也不慢就可以成为故纸堆里的古董。人生总是必要不停积攒工夫越走越高的,如果找不到一项能够储存升高,况且被市集所确认的宗旨竞争力,职业的摩天天津大学学楼是建不起来的。于是二个严刻的难点就摆在每一个技巧职员的后面——什么才是大家的大旨竞争力?

二十年前,大家以为软件开辟者的中坚竞争力应该呈未来她的聪明伶俐和实干的基础上,要掌握算法、硬件、编写翻译、Computer体系布局,要有天马行空般的想像力和创制力,能够一手一足单打独斗。至于哪些协会同盟、编码规范、单元测量检验、最好实施,都以对天才的不要求的封锁。

大概到了20世纪90时代早先时期,八字变了。随着软件的局面进一步大,甚于今世操作系统、面向对象才干、软件开拓工具、程序库和框架的广泛,“平台”和“工具”变得更其主要了。大很多时候,开采者无需自身开头完毕全体作用,他所重视的平台早就准备好了现存的机件供役使,一时居然应用程序中最繁琐、最复杂的一对已经由框架或程序库达成好了。因而,大家广泛认为,多少个开辟者的主导竞争力非常大程度上海展览中心现为对平台与工具的接头和左右,并依托这种驾驭创建性地构筑产品,恐怕更合适地说,一种创设性地组装产品的力量。你还在为刚刚研讨出来的七个火速算法而得意吗?旁边这位依据程序Curry提供的零件,已经神速地产生了整整功用模块;你发明了一个新的录像格式以至对应的codec?很伟大!可是另七个羽毛未丰、连高速傅里叶转变算法都写不出去的团体曾经依照sourceforge上的开源组件做出产品来,何况播得满网络都以了。当然,骇客们如故保有不行替代的市场总值,总是能找到本身的职位;不过对于那多少个重申团队战争、快捷走路的同盟社的话,四个熟悉驾驭MFC、Delphi、J2EE、ASP.NET只怕LAMP的开荒者恐怕更实用,能更管用地为集团拉动价值。因此,那样的程序员便有的时候形成商家的命根子,公众眼中的能人。

可是不到十年下来,难点又冒出了。流行的平台和工具如走马灯般你方唱罢作者进场:前日还在为精晓了MFC、Delphi而得意,明天就意识使用主流已然是Web了;刚刚啃完艰深的EJB2,抬眼一看却发掘它早就被Spring的拥趸们批倒批臭了;上月如故冲在敏捷Java领域的改良派,下一个月就被一堆嘴上无毛的Ro福特Explorer观众给划到改良的周旋面去了;ASP.NET还没学踏实呢,微软又图谋好ASP.NET MVC、ASP.NET AJAX、Silverlight等等一大堆新东西让你啃了。那样下来,哪天是个子?把温馨的为主竞争力营造在这里些须臾间即逝的昙华上,难道不是把有限的性命投入到最棒的瞎折腾之中吗?难道独有钻到一间舒舒服服的大公司里,到了三十多岁就寻求所谓的“转型”,顺着一条非常确实的“职场路径”攀或是混,最终在铺子尚未关闭要么本人从不被“战术裁员”的幸而之下头顶玻璃天花板光荣誉退伍休,才是神州技士的归宿?什么才是技士能够一劳永逸积累,不断增高,不但能够太平盛世,何况能够完成梦想、成就职业的主干竞争力呢?回答好那些主题素材,对于后天的开采者来讲,大概比调节和贯通某项具体本领意义首要得多。

在笔者眼里,今世程序员的为主竞争力至少应该浮未来如此几点上:有实干的基础,活跃的想像力与成立力,神速的求学技能,具有行当和世界知识,以至专门的学问的软件工艺技能。而在这里当中,专门的学问软件本领是最宗旨、也是最重大的一项。

何以是专门的学问软件本事呢?就是不容置疑地开采软件的力量,更具体地说,是由此一多元有集体的、有规范、流程化、可查看、可重新的实施作为,合作式开拓高素质程序的技艺。对于一个工程师来讲,那是您的看家老本,对于四个软件团队来讲,这是你们的立足之基。算法不会,能够查资料稳步明白;不清楚行业,能够边做边学,慢慢深刻;缺少更新,能够站在受人尊敬的人肩膀上耐心搜索;以致基本功不足,也得以本身弥补,然而一旦未有做软件的正式态度和实行技巧,未有创建合格软件的工艺水平,连一段高水平的次第都写不出去,试问你还剩余什么?

由此近三十年的时日,人们最终认知到,在规模化团队相濡以沫的意况下,决定软件产品质量的不再是私家的才智,亦不是靠什么神灵技艺,而是团队的工艺推行。是不是在一上马就形成了开拓陈设?是还是不是对这几个布署实行了不可或缺的认同、维护和追踪?须求的正儿八经文书档案是不是撰写了?是不是形成了成立的架构?是还是不是适用地挑选了开采工具和编程语言?是或不是创建了适应共青团和少先队渐进合作的精良的工具和行事平台?是不是一开首就造成了有力的毛病查验、调控和追踪政策并一直严俊地试行?是不是制定了连年一致的编码标准,况且经过诸如代码走查等加以保障?是还是不是有全部的测验制度?是还是不是具备明显的属性优化和软件安全性保证进程?是还是不是在全方位生命周期得以落成了严刻的本子管理、配置管理、发布管理和软件维护退役管理艺术?那一个实实在在的难题,是索要耐心与留神地用实际进行细节来回答的。当几个团体对此那么些标题都交给了斐不过平等的答复並且用行动来实行的时候,他们正是三个正经的、具备主旨竞争力的共青团和少先队。而当三个个体开拓者能够对那么些难点负有不错的守旧,并且通过施加自个儿的影响力拉动集体向科学的势头升高的时候,他便是一个富有主导竞争力的开采者。八个负有主导竞争力的集体和开垦者,是能够不断提高的,是具有把握机遇的力量的;一旦时机恰如其分,他们就完全有一点都不小可能率完毕更加大的目的。

十多年以前国内外软件界对工艺的主题素材并不注重。大多数人依然执迷于技巧自身,指望某一天贰个面向某某的才能能够一劳永逸地消除软件开采中的所有毛病,要么正是把标题大而化之为“软件工程”,图谋以指令性的办法,在微观的范围上用管理替代工艺。在此三个方向上,程序猿要么被视为能够丰裕放纵的孤胆硬汉,要么被视为英雄编制程序手艺最后出现在此之前不得子虚乌有的过渡品,或然管理指令的教条的施行体,“人”的维度消失了。这种对于人和工艺细节的概略也展现在本事创作方面。软件工程、面向对象、编制程序本事和成品手册之类的写作汗牛充栋,而认真谈起软件工艺的书吉光片羽。

以至20世纪90年份中叶,随着有个别软件出品的范围更大,微软首先认知到工艺难题的要害,于是出版了诸如《代码大全》、《编写清晰的代码》等一多种研商这一主题材料的编写。直到20世纪90年间后期,当全部工产业界从面向对象和软件工程的幻影泡沫中走出去现在,才初始认真完善地审视软件工艺的标题,並且经过快快捷运输动、把软件工艺的最首要和骨干实行提到了三个专心的地点上。事实上,敏快捷运输动能够以为是软件工艺的复苏运动。另外,随着《代码大全2》、《软件工艺》、《代码阅读》、《技士修炼之道》等优良文章的问世,在技巧书籍领域也穿插出现了一群专门钻探软件工艺的著述。那本《编制程序匠艺》也是那些小圈子中的一本佳构。

本书是一部宏观切磋软件构造工艺实行的编慕与著述,从软件开采的安顿到架构划虚构计,从编码风格标准到软件缺欠的检验与管理,从程序猿工具箱的布署到协会同盟精神的培养,那本书都予以了确切、有意思而全数启迪性的座谈。这么些评论,既有稳固、理论性一面,也许有本事性的求实提出,对于公司主任、高档开垦者和每二个愿意异常快升高的技师具备分明的教导意义。假如读者认可软件工艺的关键,那么能够说那本书是帮扶读者建立自个儿宗旨竞争力的一本难得的作品。极其值得一说的是,那本书粤语版的翻译流畅自然,在广大地点都展现出译者的认真态度和翻译功力。对于一本翻译自斯拉维尼亚语的技能创作来讲,那如实是三个大大的加分。

当然,一本书的覆盖的面积和法力到底是轻便的,主旨竞争力的树立和建构百川归海是二个困难施行的进程,不一样种性别格的人也必将有所分歧的对象和办法。不过本身深信,对于有心人来讲,只要大家不断地商讨和实施,都会收获本人的主干竞争力,做三个有策画的人,争取和等候机遇的偏重,最后贯彻团结的人生指标。

读此书有感而发,横生枝节,是为评价。

 

孟  岩      

《技术员》杂志工夫小编

二零一零年15月于新加坡 

译者序

用作从事软件开垦的程序猿,你势必遇到过如此的图景:自以为周详的代码,在品种就要收场的时候,却接连会发现还或者有许多内容需求修改。更有甚者,由于人手的更换,这么些他们遗留下来的“老代码”,作为时间留给工程师与项目组的最大遗产,却恐怕会化为项目组的天灾人祸。

除外受制于人类自个儿的顽固的病魔之外,还应该有由于组织而带来的题目,如客商须求持续改动、必得在有限的时间和预算之内实现项目,来自内部所谓“项目管理”的各种压力,等等。天哪,那个难点我们多方人都碰着了。

列宁曾经在监狱中写下了《怎么做?》,指点了俄国的十二月革命。而在软件业,从一代宗师FrederickP. Brooks的《人月神话》开始,就在找“咋办”这么些“银弹”了。然则,“狼来了”在反复被喊出来后,已经很罕见人相信了。大家亟须承认,那一个都以素有层面包车型大巴标题,近日还不能获得减轻。但是,本书的撰稿人Pete Goodliffe认为,起码大家能够利用部分方法,减弱一些支出上的惨重。因为,除了开辟,人生还大概有众多进一步美好的事物在等着大家。大家此次也能够高喊“银弹来了”。未有最佳,唯有越来越好,何人知道本次不是真的吗?

无人不知国画大师齐爱晚亭在年轻的时候,曾经做过木匠。据他们说有二遍她和师傅去给地主干活,在路上迎面走来另外一对木匠师傅和徒弟。齐先生的师傅说,赶紧给旁人让路。师傅和徒弟俩站在路边,老师恭敬地凝望这多人渐渐走远。齐纯芝不解,问师傅:同是木匠,你本人师傅和徒弟为啥要给他们让路。老师傅回头说:为何?外人是做细活的,大家是做粗活的。

Pete Goodliffe在产业界的新春快要超过许多个人的年龄了,此君曾经读书两个世界、不相同的编制程序语言以致各个架构,并且已经在运用不等同流程的商号里从事开垦。在本书中,他把多年压箱底的一对观念主见和技术告诉了豪门,那么些都以岁月与智慧的三结合,相信不管开垦职员、项目老董乃至测量检验人士,都可以从当中发现Alibaba拉开金库的钥匙。

那么本书有怎么着特点吗?对于想精通内容的日常读者来讲,本书至稀有以下特征:

1.邻近实际 《编制程序匠艺——编写卓绝的代码》是本书的书名,但也是小编的用心所在。人生有八个境界,最后一个正是“看山是山,看水是水”。那是废话吗?当然不是,我对此付出了最棒的解答。作为工程师,我们最欢畅顶牛分裂工具、平台、方法之间的上下。而小编却因此多年经历,力图告诉大家应当怎么升高水平,并变为一名优异的程序猿。这个格局就如点石成金的指头,它们是方法论,实际不是指向实际的工具也许平台的说法。我们未来所缺的,恰恰是这几个能使本人更进一阶的手段,并不是那二个特殊的技艺细节。

2.内容丰富翔实  很稀有一本书能包罗如此多的世界,并且还这么扎实。作为一名技术员,大家大概永久不能达成周密。而须求处于一种持续不断地加强的地方,总会有越多的事物必要学习。那么下一步应该做什么呢?这里就有答案。

3.可用作“秘要心法” 本书不仅仅相符入门者,也顺应须要升高的开荒人士,以致那多少个想治本好所谓代码猴子的项目COO们。与《项目老总案头手册》同样,那本书也将变为各位的案头手册也许枕边书,能够看作应急只怕提高的招数。要是之后遭受了难点,能够任何时候参阅相关的章节。

4.心理决定整个  那句话对吧?有了优异心态,不鲜明行,若无,断定极度。大家常常赞佩于老外以四50周岁的年龄仍可以三番六遍从事编制程序,为何我们那个啊?恐怕两样的读者都会找到属于自身的答案!Pete Goodliffe具有开阔的视界,扎实的底子,广泛的珍爱,带有一种技士应该有所的名贵和休闲。那便是我们以此浮躁的不经常中积极商量的一代技术员所不具有的。

末尾禁不住要抱怨一下,小编Pete Goodliffe以他加上的经验和爱好,给翻译带来了相当的大的难为,举例由于对于音乐的欢快,全部章节的标题都来自大不列颠及英格兰联合王国的歌曲名称。为了知道上的直观,大家在翻译的经过中选用的是“信达雅”中的“雅”,以确认保证国内读者能十分的快切入宗旨。本书每章起初和撰写的长河中,作者都援用了历史上也许今后社会中一些有名气的人的名言,那给翻译扩大了无数的难度,不过由陈岚好精辟,这几个名言也可称之为点睛之笔。尤为值得欢愉鼓舞的是,此君对本身中华文化竟然也许有早晚的造诣,孔子和老子的哲理名言竟然一再油不过生,而且可以方便地球表面明出那一个一代天骄的研商对软件开拓有啥启发,那特不轻巧,难为了小编,也确实难为了译者。从异国作者的笔下,让大家实在体会到了和谐国家的学问博大精深。那从贰个左侧也反映出南海西海,千圣一心。

此书给了笔者们一个快速成功升级的好榜样。我觉着它更像多个技师的入门或然修行心法。从此入门,我们能够少走非常多弯路。同时,大家也要分得像佛经中“般若Polo密”所讲的那样:大聪明到对岸,最终连佛法也像渡河的筏子同样,成佛后霎时遗弃。笔者更希望的是,看过此书的读者们,最后能够拍案而起,大声说:小编能够了。

 

译  者   

2007-12-2 于北京

前言

那正是《编制程序匠艺——编写优秀的代码》要高达的目标。那本书的开始和结果恐怕未有有人向您教学过:怎么样“在具体世界中”准确地编制程序。《编程匠艺——编写卓绝的代码》填补了教材中所紧缺的原委。的确,那本书研究了巧妙代码的技艺细节和难题。但除去它还富含越多的原委:如何以准确的法子编写准确的代码。

那是怎么着意思啊?在切实世界中,编写出色的代码有多种的意义:

— 编写在技能上温婉的代码

— 编写可爱慕的代码,让别的人也得以看得懂

清楚并改写别的人所编写的杂乱的代码

与另外程序猿卓越地协力工作

要形成多少个编码高手,你须要具有那几个才干(乃至更加的多)。

您不可能不领悟代码那神秘的性命:当你输入代码之后,会生出什么?

你必须富有审美的力量:区分精粹的代码和丑陋的代码。

你还必得在推行中运用理论的心机:认真思考并化解以下难点,何时利用简化的操作是合理的,哪一天开头动手代码设计,以至怎么样时候结束和承继(实用的“提前退出”原则)等

本书将扶持您兑现那么些目的。

你将读书到何等在软件工厂中求得生存,怎样观望沙场并问询敌人,怎么着制定战术以规避仇敌的圈套,以致哪些在各个困难中开荒的确优秀的顺序

软件开辟是三个有意思的生意。这几个事情在迅猛地发展,充满了弹指间即逝的风靡成分与风云突变的风气、致富的陈设以致新观念的传播者。

它并不成熟。笔者不是宣称自身有怎么样奇妙的答案,但自己确实有局地源于经验的、有用的建议与大家大饱眼福。

本书未有象牙塔中的理论,而独自是具体世界的经验和局地好的习于旧贯。

纵然消化吸取了这本书的原委,你将不唯有会化为一名越来越好的程序猿,并且你将变为软件工厂中一个人越来越精良的常住居民,一名真正的代码战士,你将学到编制程序匠艺的手艺

假设这听上去并不令人激动,那么恐怕你应当思虑在武装里谋职了。

做得更加好

那就是说,是怎么将“卓越”的程序猿和“不好”的程序猿区分开的吧?更器重的是,是何等将“特出”的技术员与独有是“够格”的技术员区分开的吗?

其神秘并不止在于他们的手艺力量——笔者早就见过众多对语言专门的学业了解于心、可以写出十二分紧密和让人欣赏的C++程序的技师,他们卓乎不群,不过她们写出来的代码并非常倒霉。

笔者也已经见过更加多谦逊的技术员,他们坚定不移编写极其留心的代码,不过她们所编纂的程序并不是常高贵和稳重。

诚然的区分是怎么样?好的次序设计来源于于您的姿态。而好的千姿百态在于你询问职业化的点子,以致对编写最棒的软件的死活追求,而不管软件工厂的下压力有多大。

态度就疑似一面透镜,我们经过它来看世界。这面透镜为大家的行事和行事扩张了色彩。

精良的代码必要由艺术大师精心编写制定,实际不是由懒散的程序员随便地投机取巧。通向优良代码的征程是由非凡的心愿铺就成的。

要产生卓越的技士,大家必须学会从美好的心愿起步,培育积极的眼光,并使这种健康的情态使好的作风得到升高。

在本书中,大家将见到怎么样实现那或多或少。书中隐含了大量的宗旨,小至实用的代码编写难题,大到集体架构性难题。在具有那些宗旨中,小编都注重重申了怎么着是千真万确的态度和办法。

 

态度——前进的角度

直面软件开辟的世界,随着考察和分类的长远,笔者越来越相信使规范的技士横空出世的是态度。字典中对“态度”(attitude)的概念是那般的:

态度

1.激情,理念:心绪或心绪的景况;个性。

2.飞机姿势,姿态:飞机轴相对于某一参照直线或平面(如地平线)所处

的位置。

先是个概念并从未什么样让人意外之处,那么第二个吗?实际上,第二个概念比第二个更有发表意义。

大家想像有三条贯通飞机的轴线:一条从一旁的尾翼到另一侧的尾翼,一条从机头到机尾,还应该有一条与前两条轴线垂直相交于其交点处。飞银行人士靠这三条轴线来牢固飞机,它们定义了飞机前行路径的角度。这称之为飞机的航空姿态(attitude)。要是飞机的航空姿态不得法,那么一旦有相当的小的外力施加到飞机上,飞机就能大幅度地间隔它的指标地。飞银行职员必得时刻盯住飞机的宇宙航行姿态,非常是在起飞和着落等关键时刻。

固然如此那听上去像贰个枯燥的励志片,但它确实是我们的软件开辟工作的贰个适度比喻。飞机的“态度”决定了它发展的角度,而我辈的姿态则调整了大家通往成功编码之路的样子。工程师的技技艺量有多强并不主要,假使他或她的技艺未有面对健康态度的支撑,那么工作仍将是一件忧伤的生意。

错误的态度能够导致或中断二个软件项目,所以保持正确的上扬角度来实行编制程序是至关心注重要的。你的情态照旧阻碍,要么推进你的个人成长。要想成为更完美的工程师,我们须求确认保证有不利的态势。

什么人理应阅读那本书

引人瞩目,那一个愿意拉长他们代码质量的人应有读那本书。大家都渴望成为更加好的程序猿;如若您未有这种期盼,那么那本书就不合乎你。

您可能是一名职业的工程师,非常的大概已入行多年。

您或然是一名高年级的上学的小孩子,熟习编制程序的定义,可是不太自然应该什么将那个概念付诸于实行。

倘使您正在经受指引,或正在指引有个别新手,读那本书也会大有益处。

你必得已经怀有编制程序经验。本书并非要教您哪些编制程序,而是告诉你什么样越来越好地编制程序。当自家努力防止语言的歧义和教条时,我索要举出一些代码示例。那么些示例超过二分之一是使用C、C++或Java语言编写的,因为这一个语言是未来流行的语言系统。读这么些事例并无需你是某种语言的学者,所以即便你不是一品的C++程序猿,也不用惊悸。

本身借使你作为本书的读者,正在大概将在要软件工厂的压力下编写制定代码。这日常意味着你受雇于二个商业性的支付社团,但您有十分的大希望在付出多少个混乱的开放源码开拓项目,或成为四个受雇为第三方提供软件的枪手(项目承包方)。

本书包罗怎么着内容

本书的显要在于工程师的千姿百态,但它不用是一本心情学教科书。大家将深刻研讨许多大旨,包蕴:

— 源代码的体制

— 防备性的编码工夫

— 怎样有效地调节和测验程序

— 特出的团体合营技能

— 管理你的源代码

火速地浏览一下目录,你即可掌握本书所包含的原委。选拔这一个核心的理由是何等吧?笔者曾有大多年从业培养演练新技术员的做事,在这里时期那个核心顾后瞻前地被建议。作者也曾经在软件工厂中任职多年,看到过许多三次又三遍出现的标题,而那一个标题都以与以上主旨相关的。

若果您可见克服这几个编制程序的封锁,那你将从二个上学编制程序的菜鸟成长为一位真正的编码高手。

本书的团队情势

自个儿早就全心全意将这本书写得轻便阅读。守旧的法则那样说,你应当从头起始并大力干活到结尾。忘掉那句话吧。你一丝一毫能够拿起那本书,展开你感兴趣的章节,并从那边读起。每一种章节都以单身的,个中有广大得力的交叉引用,能够使您打探各章之间是何等结合在共同的。当然,借让你欢乐安分守纪守旧,从头读起也不失是贰个好的取舍。

逐个章节都是日常的构造编写,你不会意识别的特殊。每一章都能够分成下边多少个部分:

本章主题

在每章的一上马,笔者会列出该章的要点。你能够从这边掌握内容轮廓。浏览一下这几个大旨,你就能领会将关乎哪些方面包车型地铁内容。

章节主体

那边都以会令你认为本书性价比高的可歌可泣的内容。

在章节主体中会时而出现有的“关键观念”。那些首要观念重申了重在的技艺、难点和神态,所以对这么些剧情要十一分关怀。其格式是这般的:

主要概念  首要内容。注意!

总结

在每章的末段,这一小节将总计该章所谈论的主旨。它为整章内容提供了三个回顾性的视图。假若您确实时间少于,也足以只阅读每章的要害思想和那些计算部分。千万别告诉别人那是自个儿说的。

然后,小编将比较可以技术员和不佳程序猿的表现艺术,来总括你应当力求选用的尤为重要态度。假若您有胆略,也能够遵照这么些事例来研究一下协和,但愿事实不会让您太痛心!

另请参见

本条列表会将您带入相关的章节,并表达它们是什么样与前段时间的宗旨相关的。

思考

终极,作者将列出一些亟需思考的主题材料。这一个主题素材并不游离于全书之外——它们是各章不可缺点和失误的一某些。它们并非要你想起刚刚所涉猎的宗旨,相反,那些主题素材的目标是使您进行观念,并联想到该章之外的从头到尾的经过。这几个难点分为两组:

— 深切思虑  那个主题素材将深刻地钻研各章的核心,并建议有个别重要的论点。

— 领会本人  这么些难题将暗访你及软件开荒团队的工作习贯和编码成熟度。

永不略过这么些难点!纵然你很懒惰,以致于不想坐下来认真思虑每一个难点的答案(相信作者,思索这一个题指标答案会让你收益无穷的),最少也应有读一读这么些主题材料并顺便做些思量。

本书的末梢一有些含有了对这个题指标答案和座谈。那并非一套直接的答案集——这一个主题材料中比少之甚少能够直接用“是”或“否”来回复。在您怀恋并获取答案之后,无妨与本人的答案做个相比较。笔者的洋洋“答案”都包括了有的各章中未有涉及的额外音信。

章节——详细表达

本书的每一章都将探讨一个单独的主题,涉及今世软件开荒的一个切实问题领域。那些主题素材是大伙儿编写不佳的代码或不好地编写代码的常见原因。各章所描述的没有错方法和姿态,将使站在第一线的你生命力越来越精神。

本书共分为六篇;每一篇的目录页列出了各篇所满含的章节,并简短描述了各类章节所满含的内容。这一个篇将由内而外市打开商讨。我们将从应当编写“何种”代码开头入手,最后重点于大家理应“如何”编写这种代码。

笔者们的座谈从代码表面最初,首即使从宏观的角度分析怎么着编写源代码。笔者特意将那有个别放在全书的最终边,因为剪裁代码是技术员们所真正关注的。

第1篇:代码表面

本篇描述了开荒源代码的求实细节。我们将商讨堤防性编程的本领,以至哪些编写代码的格式和版式。然后,大家将三番五次索求怎么样为代码命名和做笔录。编写注释和管理错误的本事也暗含在本篇中。

第2篇:代码的神秘生命

接下去,我们将钻探编写代码的进度,即什么创制代码和管理代码。大家将精通构造代码的工具、测量试验方法、调节和测验技能、编写翻译可实践程序的不错过程以至优化等剧情。最终,大家将合计什么写出安全的顺序。

第3篇:代码的多变经过

然后,我们将从更加宽泛的角度谈谈构造源代码的主题素材。大家将研讨代码施工方案的支出、软件的连串布局以致源代码是什么随时间而成长(或老化)的等难点。

下一步,大家将跻身“宏观”层面,抬起来看看身边发生的事——软件工厂中的生活。如果不是八个费用小组的积极分子,大家是不容许写出布满软件的,接下去的三篇包罗了怎么样在集体中收益的手艺和章程。

第4篇:“一群”程序员

技术员不可能生存在真空中。(那亟需有特殊的呼吸系统具。)在本篇中大家将跻身更普及的社会风气,看一看好的花费习于旧贯,以致怎么样将这么些习贯融入到职技员的经常专门的学问中。本篇还含有了理想的村办和团队编制程序本领,以致版本维护系统的接纳办法。

第5篇:开辟进程的组成部分

在本篇中,大家将陈说软件开垦进程的部分准绳:书写标准、推行代码核查以致时光预算的法力。

第6篇:从高处俯瞰

谈到底一篇将从高处向下审视开采进度,切磋软件开拓方法论,以至分歧的编制程序法规。

如何运用本书

从头读到尾,或从您感兴趣的地点读起,都没难点。

最首要的是,你要带着一种开阔的沉思去读《编制程序匠艺——编写出色的代码》那本书,并思索什么将您所读到的从头到尾的经过应用到您所做的业务上。聪明的人从友好的不个中读书,而更理解的人则从别人的谬误中上学。从外人的阅历中上学总是有益的,所以在读过那本书之后,就能够掌握你所保养的程序猿的眼光。浏览各章之后的难点并与这几个工程师实行商讨。

意在你在念书编码匠艺的时候,能够得到欢欣。读过未来,回看一下,看看某个许匠艺是您愿意承受的,你的匠艺进步了多少,以至你的千姿百态是还是不是有所创新。如果什么也从不发生,那么那本书就倒闭了。小编深信不疑结果不会是那般的。

给老师的一些提出

这是一本指引经验非常少的技术员的很好的工具书。对于那或多或少,小编在编写本书的历程中特意展开了酌量,而且本书已表达有利于增过技师的成熟度和洞察力。

读本书的顶级格局,并非用某种格局一口气学完全部内容。相反,最好办法应该是个别阅读各章,然后与接受你教导的菜鸟商量该章的内容。各章最终列出的主题素材得以充当斟酌的源点,所以从那么些标题开首争论,不失为三个好格局。

目 

第1篇  代码表面第一片段

第1章  长于堤防:健壮代码的堤防性编程技术    3

1.1  向优质的代码前进      3

1.2  设想:最坏的选项      4

1.3  什么是防卫性编制程序?   6

1.4  又大又坏的社会风气   8

1.5  防御性编制程序本领   9

1.5.1  使用好的编码风格和创立的策动   9

1.5.2  不要仓促地编写代码       9

1.5.3  不要相信赖哪个人       10

1.5.4  编码的目的是清楚,并非精简   11

1.5.5  不要让任何人做他们不应当做的修补职业       11

1.5.6  编写翻译时展开装有警报按键       12

1.5.7  使用静态剖判工具   13

1.5.8  使用安全的数据结构       13

1.5.9  检查有着的回来值   14

1.5.10  严谨地处理内部存款和储蓄器(和其他宝贵的能源)     14

1.5.11  在注脚地方发轫化全体变量  15

1.5.12  尽恐怕推迟一些扬言变量     15

1.5.13  使用正式语言工具  15

1.5.14  使用好的确诊音信日志工具  16

1.5.15  严慎地开展强制调换     16

1.5.16  细则  16

1.6  约束      17

1.6.1  约束的从头到尾的经过       19

1.6.2  移除约束   19

1.7  总结      22

1.8  另请参见      22

1.9  思考      24

1.9.1  浓重思索   24

1.9.2  结合自个儿   24

第2章  精心布局:源代码的版面和样式       26

2.1  什么是根本   27

2.2  了然你的读者      27

2.3  什么是好的体裁   29

2.4  使用括号      30

2.4.1  K&本田UR-V括号风格  30

2.4.2  悬挂式的括号风格   31

2.4.3  缩进的括号风格       32

2.4.4  其他的括号风格       33

2.5  主宰一切的风骨   33

2.6  内部风格(以至在何地使用它们)   35

2.7  设立标准      37

2.8  正义的战斗   39

2.9  总结      40

2.10  另请参见    42

2.11  思考     42

2.11.1  深远思量  42

2.11.2  结合自个儿  43

第3章  义正言辞:为有意义的事物起有意义的称谓    45

3.1  为何咱们理应适当的量地命名呢   47

3.2  大家对哪些举办命名   47

3.3  名字游戏      48

3.3.1  描述性       48

3.3.2  才能上科学       48

3.3.3  符合语言习贯   49

3.3.4  恰当   49

3.4  具体细节      50

3.4.1  命名变量   51

3.4.2  命名函数   52

3.4.3  命名类型   53

3.4.4  命名名字空间   54

3.4.5  命名宏       55

3.4.6  命名文件   56

3.5  玫瑰不叫玫瑰      57

3.5.1  保持前后一致   58

3.5.2  利用上下文       58

3.5.3  使用对你方便的称号       59

3.6  总结      59

3.7  另请参见      61

3.8  思考      62

3.8.1  浓厚考虑   62

3.8.2  结合自个儿   63

第4章  不在话下:编写“自文书档案化”代码的才能    64

4.1  自文书档案化的代码   66

4.2  编写自文书档案化代码的技能   69

4.2.1  使用好的体制编写轻巧的代码       69

4.2.2  选取有含义的称谓   70

4.2.3  分解为原子函数       70

4.2.4  选拔描述性的花色   71

4.2.5  命名常量   71

4.2.6  强调首要的代码       72

4.2.7  分组相关新闻   72

4.2.8  提供文件头       72

4.2.9  恰本地管理错误       73

4.2.10  编写有含义的笺注  73

4.3  实用的自文书档案化方法   74

4.3.1  文学性编制程序       74

4.3.2  文书档案化学工业具       76

4.4  总结      78

4.5  另请参见      79

4.6  思考      79

4.6.1  深入思索   79

4.6.2  结合自身   81

第5章  随篇注释:如何编写代码注释    82

5.1  什么是代码注释   83

5.2  注释看上去是什么的      84

5.3  多少注释是得当的      84

5.4  注释中应当有个别什么   85

5.4.1  解释为啥,并非何许   85

5.4.2  不要描述代码   86

5.4.3  不要代替代码   86

5.4.4  确认保证注释有用   86

5.4.5  制止分心   88

5.5  实践      88

5.6  从审美的角度看注释   89

5.6.1  一致性       89

5.6.2  清晰的块注释   90

5.6.3  缩进的笺注       90

5.6.4  行尾注释   91

5.6.5  援救您读书代码       91

5.6.6  选择一种珍贵开支相当的低的作风       92

5.6.7  分隔板       92

5.6.8  标志   92

5.6.9  文件头注释       93

5.7  使用注释      94

5.7.1  援救你编写例行程序       94

5.7.2  错误更正通知   95

5.7.3  注释过时   95

5.7.4  维护和架空的解说   96

5.8  总结      97

5.9  另请参见      98

5.10  思考    98

5.10.1  深远思虑  98

5.10.2  结合本人  99

第6章  人非圣贤:管理不可制止的动静——代码中

的荒谬情况    100

6.1  从何而来      101

6.2  错误报告机制      102

6.2.1  不报告       103

6.2.2  返回值       103

6.2.3  错误状态变量   104

6.2.4  异常   104

6.2.5  信号   106

6.3  检查测验错误      107

6.4  管理错误      108

6.4.1  曾几何时管理错误   109

6.4.2  可能的影响       110

6.4.3  代码示例   112

6.5  使鬼世界体现   116

6.6  管理八花九裂      118

6.7  总结      119

6.8  另请参见      119

6.9  思考      120

6.9.1  深切思考   120

6.9.2  结合自个儿   121

第2篇  代码的暧昧生命第一部分

 第7章  欲善其事,先利其器:使用工具营造软件      125

7.1  什么是软件工具   126

7.2  为何要留意工具      128

7.3  使工具发挥成效   129

7.3.1  精通它能做些什么   130

7.3.2  学习如何驾车它       130

7.3.3  理解它相符哪些义务       131

7.3.4  检查它是或不是可用       131

7.3.5  找到领会更加多新闻的路子       131

7.3.6  查明新本子何时出现       132

7.4  哪个工具      132

7.4.1  源代码编辑工具       133

7.4.2  代码营造工具   136

7.4.3  调节和测验和检察工具       138

7.4.4  语言扶助工具   140

7.4.5  别的工具   141

7.5  总结      142

7.6  另请参见      143

7.7  思考      144

7.7.1  深切思量   144

7.7.2  结合本人   145

第8章  测量试验时期:测验代码的魔术       146

8.1  反思现实      148

8.2  何人、是怎样、何时以致为啥   149

8.2.1  大家怎么要测验   149

8.2.2  哪个人来扩充测量检验   150

8.2.3  测量试验的剧情有个别什么       150

8.2.4  什么日期举办测量检验   151

8.3  测验并简单……   152

8.4  测量试验的等级次序   156

8.5  选拔单元测验用例      160

8.6  为测量检验而规划      163

8.7  看!不要用手      164

8.8  面临故障该怎么办      165

8.9  你能管住它吗      166

8.9.1  破绽追踪系统   166

8.9.2  bug审查    168

8.10  总结    169

8.11  另请参见     169

8.12  思考    170

8.12.1  深入思量  170

8.12.2  结合自个儿  171

第9章  寻觅破绽(调节和测量检验):当事情进展获救经引足

时该如何是好    172

9.1  生活的真相   173

9.2  bug的种类    174

9.2.1  从远处看   174

9.2.2  从左右看   175

9.2.3  从更近处看       178

9.3  消灭害虫      180

9.3.1  地下之路   181

9.3.2  地上之路   181

9.4  搜寻bug       182

9.4.1  编译时不当       182

9.4.2  运营时不当       184

9.5  怎么着校对缺欠      188

9.6  预防      190

9.7  除蜂剂、驱虫剂、捕蝇纸   190

9.7.1  调试器       190

9.7.2  内部存款和储蓄器访谈校验器       191

9.7.3  系统调用追踪   191

9.7.4  内核转储   191

9.7.5  日志   191

9.8  总结      192

9.9  另请参见      193

9.10  思考    194

9.10.1  深远思索  194

9.10.2  结合本人  194

第10章  代码创设:将源代码调换为可实行代码的进度      196

10.1  语言障碍    197

10.1.1  解释型语言     198

10.1.2  编写翻译型语言     199

10.1.3  字节编写翻译型语言     200

10.2  小题大做    201

10.3  创设软件版本    203

10.4  怎么着才好不轻松一个能够的营造系统    206

10.4.1  简洁  206

10.4.2  一致  207

10.4.3  可重复和可靠  207

10.4.4  原子性     208

10.4.5  能够应付错误  209

10.5  技能细节    210

10.5.1  指标的精选     210

10.5.2  内务管理  212

10.5.3  正视关系  212

10.5.4  自动构建  213

10.5.5  营造配置  214

10.5.6  递归地使用make    215

10.6  请公布自个儿吧 215

10.7  创设大师是万能的吗 218

10.8  总结    218

10.9  另请参见    219

10.10  思考   219

10.10.1  深刻思量       220

10.10.2  结合本身       220

第11章  追求速度:优化程序和编辑高效的代码  222

11.1  优化是如何 223

11.2  是何许使代码差强人意 224

11.3  为啥不开展优化呢 225

11.4  为啥要开展优化     228

11.5  优化的求实细节 229

11.5.1  评释您供给进行优化     230

11.5.2  搜索运维得最慢的代码  230

11.5.3  测量检验代码  232

11.5.4  优化代码  233

11.5.5  优化今后  233

11.6  优化的手艺 233

11.6.1  设计改造  234

11.6.2  代码改换  237

11.7  编写高效的代码 241

11.8  总结     243

11.9  另请参见     244

11.10  思考   244

11.10.1  深刻考虑       244

11.10.2  结合本人       245

第12章  不安全感综合征:编写安全的次序  247

12.1  危险    248

12.2  敌人    250

12.3  借口,都是托词 252

12.4  感觉很软弱 253

12.4.1  不安全的布置和体系布局     253

12.4.2  缓冲溢出  254

12.4.3  嵌入的询问字符串  255

12.4.4  竞争情形  255

12.4.5  整数溢出  256

12.5  防守措施    257

12.5.1  系统装置才具  258

12.5.2  软件设计技能  258

12.5.3  代码实现技艺  260

12.5.4  规程技能  261

12.6  总结    261

12.7  另请参见    262

12.8  思考    263

12.8.1  深刻思虑  263

12.8.2  结合本人  263

第3篇  代码的朝梁暮晋经过首先有个别

 第13章  崇尚设计:怎么着编写出特出的软件设计       267

13.1  边设计边编制程序    268

13.2  大家要规划如何 269

13.3  为啥如此忙乱 270

13.4  杰出的软件设计 271

13.4.1  简洁  272

13.4.2  优雅  273

13.4.3  模块化     274

13.4.4  卓越的接口     275

13.4.5  可扩充性  278

13.4.6  幸免再一次  278

13.4.7  可移植性  279

13.4.8  切合语言习贯  280

13.4.9  优良地文档化  280

13.5  怎么样统一计划代码    280

13.5.1  设计艺术和进程     281

13.5.2  设计工具  282

13.6  总结    285

13.7  另请参见    285

13.8  思考    286

13.8.1  长远思量  286

13.8.2  结合本人  287

第14章  软件种类结构:奠定软件设计的基础      288

14.1  什么是软件种类结构 289

14.1.1  软件蓝图  289

14.1.2  视图  290

14.1.3  在曾几何时和哪个地点进行系统结构划设想计  292

14.1.4  用体系布局来做什么     293

14.1.5  关于组件和一连     294

14.2  什么是优质的系统布局    295

14.3  连串布局风格    297

14.3.1  未有系统布局  297

14.3.2  分层的种类布局     298

14.3.3  管道和过滤器类别布局  299

14.3.4  客商端/服务器系统布局 299

14.3.5  基于组件的种类布局     302

14.3.6  框架  303

14.4  总结    303

14.5  另请参见    304

14.6  思考    305

14.6.1  浓重思量  305

14.6.2  结合自身  305

第15章  考订与革命:代码是哪些成长的      307

15.1  软件烂掉    308

15.2  警示复信号    310

15.3  代码是什么成长的    312

15.4  相信不容许之事 315

15.5  对此咱们能够做些什么? 316

15.5.1  编写新代码     316

15.5.2  维护现存代码  317

15.6  总结    319

15.7  另请参见    319

15.8  思考    320

15.8.1  深刻思虑  321

15.8.2  结合自个儿  321

第4篇  “一堆”工程师第4局地

 第16章  代码猴子:培育精确的编制程序态度和措施       325

16.1  丰富多彩标猴子 326

16.1.1  卖力职业的技师  327

16.1.2  代码猴子  328

16.1.3  权威  329

16.1.4  半权威     330

16.1.5  傲慢的天才     331

16.1.6  牛仔  333

16.1.7  规划者     334

16.1.8  老前辈     335

16.1.9  狂热者     336

16.1.10  单线条工程师       337

16.1.11  拖沓者    338

16.1.12  勉强的公司总管   339

16.1.13  你   340

16.2  理想的技术员    340

16.3  那么该怎么做    341

16.4  最古板的人 342

16.5  总结    343

16.6  另请参见    343

16.7  行为表格    344

16.8  思考    345

16.8.1  深刻考虑  345

16.8.2  结合自身  345

第17章  团结便是工夫:团队同盟与民用程序员  347

17.1  我们的公司——概览 348

17.2  共青团和少先队组织    350

17.2.1  管理格局  350

17.2.2  权利划分  350

17.2.3  组织和代码结构     352

17.3  共青团和少先队同盟工具    352

17.4  团队病魔    354

17.4.1  巴别塔     354

17.4.2  独裁制     356

17.4.3  民主制     357

17.4.4  卫星站     359

17.4.5  大峡谷     361

17.4.6  流沙  363

17.4.7  旅鼠  365

17.5  突出团队合营的私家本事和特征    366

17.5.1  沟通  366

17.5.2  谦虚  367

17.5.3  管理冲突  367

17.5.4  学习和适应工夫     369

17.5.5  精晓您的不足之处  369

17.6  团队合营原则    370

17.6.1  集体代码全体制     370

17.6.2  尊重外人的代码     371

17.6.3  编码准绳  371

17.6.4  定义成功  371

17.6.5  定义义务  372

17.6.6  防止倦怠  372

17.7  团队的生命周期 372

17.7.1  团队的创制     373

17.7.2  共青团和少先队的成长     375

17.7.3  团队同盟  377

17.7.4  团队甘休  377

17.8  总结    380

17.9  另请参见    381

17.10  行为表格   382

17.11  思考   383

17.11.1  深刻思索       383

17.11.2  结合自个儿       383

第18章  安全措施:源代码调整与本身调控  385

18.1  我们的权力和义务 386

18.2  源代码调整 387

18.2.1  修正调节  388

18.2.2  访谈调控  390

18.2.3  管理代码库     390

18.2.4  在代码树上创立分支     391

18.2.5  源代码调节简史     393

18.3  配置管理    393

18.4  备份    395

18.5  公布源代码 396

18.6  应该将源代码放在哪儿    397

18.7  总结    398

18.8  另请参见    399

18.9  思考    400

18.9.1  浓烈思虑  400

18.9.2  结合自身  400

第5篇  开采进程的组成都部队分第一片段

第19章  注意细节:编写软件专门的工作  403

19.1  标准到底是怎么着 404

19.2  标准的门类 405

19.2.1  必要标准  407

19.2.2  作用标准  409

19.2.3  系统系统布局正式  410

19.2.4  顾客分界面标准  410

19.2.5  设计标准  411

19.2.6  测量检验规范  412

19.3  标准应该包涵哪些内容    413

19.4  标准编写进程    415

19.5  大家为啥会不编写标准 418

19.6  总结    420

19.7  另请参见    420

19.8  思考    421

19.8.1  深切思虑  421

19.8.2  结合自个儿  421

第20章  代码检查核对:实施代码核实  423

20.1  什么是代码审核 424

20.2  什么时候进行甄别    425

20.2.1  是或不是要拓宽查证     426

20.2.2  检查核对哪些代码  427

20.3  奉行代码考察    427

20.3.1  代码核实会议  428

20.3.2  集成检查核对  431

20.4  审核你的姿态    432

20.4.1  笔者的情态     432

20.4.2  核实职员的态度     433

20.5  完美的代码 434

20.6  代码核查之外    435

20.7  总结    436

20.8  另请参见    436

20.9  清单    437

20.10  思考   438

20.10.1  深刻思量       438

20.10.2  结合自个儿       438

第21章  时间推断:软件时间范围推测的魔术      439

21.1  在万籁无声中寻觅    440

21.2  为何推测这么困难 441

21.3  压力之下    443

21.4  实用的评估价值方法 444

21.5  计划游戏    447

21.6  坚持    451

21.7  总结    454

21.8  另请参见    454

21.9  思考    455

21.9.1  长远思考  455

21.9.2  结合自己  455

第6篇  从高处俯瞰第一片段

第22章  程序秘方:代码开垦的模式和进度  459

22.1  编制程序风格    460

22.1.1  结构化编制程序     461

22.1.2  面向对象的顺序设计     462

22.1.3  函数式编程     463

22.1.4  逻辑编制程序  464

22.2  烹饪方式:做哪些与什么做    464

22.3  开拓进度    465

22.3.1  混乱  466

22.3.2  瀑布模型  468

22.2.3  SSADM和PRINCE       470

22.3.4  V模型     470

22.3.5  原型设计  471

22.3.6  迭代和增量开拓     472

22.3.7  螺旋模型  473

22.3.8  敏捷的主意     474

22.3.9  其余支出进程  475

22.4  已经够了    476

22.5  选取一种进度    477

22.6  总结    478

22.7  另请参见    478

22.8  思考    479

22.8.1  深切思量  479

22.8.2  结合自身  479

第23章  编制程序领域大观:不一样的编制程序分支      481

23.1  应用程序编制程序    482

23.1.1  塑装软件  483

23.1.2  定制应用程序  484

23.2  游戏编制程序    485

23.3  系统编制程序    486

23.4  嵌入式编制程序 488

23.5  分布式编制程序 490

23.6  网络应用程序编程    492

23.7  集团编制程序    494

23.8  数字编制程序    495

23.9  那又怎么样    497

23.10  总结   497

23.11  另请参见   498

23.12  思考   498

23.12.1  深切考虑       499

23.12.2  结合本人       499

第24章  下一步呢:结果好就总体都好  500

但下一步该做哪些啊?       501

答案和座谈    504

参谋书目       607

 

本文由澳门新葡亰网站所有平台发布于网址大全,转载请注明出处:编写卓越的代码

关键词: