下载站

展开
精品推荐
编程匠艺:编写卓越的代码

编程匠艺:编写卓越的代码

电子教程大小:758.34MB语言: / 类别:编程&书集系统: / WinXP, WinAll 提供:
应用介绍

CodeCraft:ThePracticeofWritingExcellentCode如果你可以编写出合格的代码,但是想更进一步、创作出组织良好而且易于理解的代码,并希望成为一名真正的编程专家或提高现有的职业技能,那么《编程匠艺——编写卓越的代码》都会为你给出答案。本书的内容遍及编程的各个要素,如代码风格、变量命名、错误处理和安全性等。此外,本书还对一些更广泛的编程问题进行了探讨,如有效的团队合作、开发过程和文档编写,等等。本书各章的末尾均提供一些思考问题,这些问题回顾了各章中的一些关键概念,可以促使你像专家一样思考,从而使本书成为那些渴望作为团队的一分子,职业并高效地编程的新手们的一本绝佳的参考书。PeteGoodliffe是一位软件开发专家,他在软件“食物链”上从未驻足不前。他在各种各样的项目中使用过许多种语言。他还在教授和指导程序员方面有着丰富的经验,并且常年为ACCU的CVu杂志(www.accu.org)撰写栏目“编程的职业化”。Pete痴迷于编写出色的、没有错误的代码,这使得他有更多的时间与自己的孩子共度美好时光。.....译者序著名国画大师齐白石在年轻的时候,曾经做过木匠。据说有一次他和师傅去给地主干活,在路上迎面走来另外一对木匠师徒。齐先生的师傅说,赶紧给别人让路。师徒俩站在路边,老师恭敬地目送那两人渐渐走远。齐白石不解,问师傅:同是木匠,你我师徒为什么要给他们让路。老师傅回头说:为什么?别人是做细活的,我们是做粗活的。PeteGoodliffe在业界的年头快要超过好多人的年龄了,此君曾经涉猎多个领域、不同的编程语言以及多种架构,并且曾经在采用不相同流程的公司里从事开发。在本书中,他把多年压箱底的一些观念想法和技巧告诉了大家,这些都是时间与智慧的结合,相信无论是开发人员、项目经理甚至测试人员,都可以从中发现阿里巴巴开启金库的钥匙。那么本书有什么特色呢?对于想了解内容的普通读者来说,本书至少有以下特点:..1.贴近实际《编程匠艺——编写卓越的代码》是本书的书名,但也是作者的用心所在。人生有三个境界,最后一个就是“看山是山,看水是水”。这是废话吗?当然不是,作者对此给出了最好的解答。作为程序员,我们最喜欢争论不同工具、平台、方法之间的优劣。而作者却通过多年经验,力图告诉我们应该如何提高质量,并成为一名优秀的程序员。这些方法就像点石成金的手指,它们是方法论,而不是针对具体的工具或者平台的说教。我们现在所缺的,恰恰是这些能使自己更进一阶的手段,而不是那些特殊的技术细节。2.内容丰富翔实很少有一本书能涵盖如此多的领域,并且还如此扎实。作为一名程序员,我们可能永远无法达到完美。而需要处于一种持续不断地提高的状态,总会有更多的东西需要学习。那么下一步应该做什么呢?这里就有答案。3.可作为“秘要心法”本书不仅适合入门者,也适合需要提高的开发人员,以及那些想管理好所谓代码猴子的项目经理们。与《项目经理案头手册》一样,这本书也将成为每人的案头手册或者枕边书,可以作为应急或者提升的手段。如果以后碰到了问题,可以随时参阅相关的章节。4.心态决定一切这句话对吗?有了良好心态,不一定行,如果没有,肯定不行。我们常常羡慕于老外以四五十岁的年纪仍然能继续从事编程,为什么我们不行呢?可能不同的读者都会找到属于自己的答案!PeteGoodliffe具有宽阔的视野,扎实的基础,广泛的爱好,带有一种程序员应该具有的高雅和恬淡。这正是我们这个浮躁的时代中积极探索的一代程序员所不具备的。最后禁不住要抱怨一下,作者PeteGoodliffe以他丰富的阅历和爱好,给译者带来了不小的麻烦,比如出于它对于音乐的爱好,所有章节的标题都来自英国的歌曲名称。为了理解上的直观,我们在翻译的过程中采取的是“信达雅”中的“雅”,以保证国内读者能很快切入主题。本书每章开始和行文的过程中,作者都引用了历史上或者现在社会中一些名人的名言,这给翻译增加了不少的难度,但是由于贴切精辟,这些名言也可称之为点睛之笔。尤为值得高兴的是,此君对我中华文化竟然也有一定的造诣,孔夫子和老子的哲理名言竟然多次出现,而且能够贴切地表达出这些圣人的思想对软件开发有哪些启示,这非常不简单,难为了作者,也着实难为了译者。从外国作者的笔下,让我们着实体会到了自己国家的文化源远流长。这从一个侧面也体现出东海西海,千圣一心。此书给了我们一个快速成功进阶的好范例。我觉得它更像一个程序员的入门或者修行心法。从此入门,我们可以少走很多弯路。同时,我们也要争取像佛经中“般若波罗密”所讲的那样:大智慧到彼岸,最后连佛法也像渡河的筏子一样,成佛后立即丢弃。我更希望的是,看过此书的读者们,最后能够拍案而起,大声说:我可以了。...目录:第Ⅰ篇代码表面第一部分第1章善于防守——健壮代码的防御性编程技巧1.1向优秀的代码前进1.2设想:最坏的选择1.3什么是防御性编程1.4又大又坏的世界1.5防御性编程技巧1.5.1使用好的编码风格和合理的设计1.5.2不要仓促地编写代码1.5.3不要相信任何人1.5.4编码的目标是清晰,而不是简洁1.5.5不要让任何人做他们不该做的修补工作1.5.6编译时打开所有警告开关1.5.7使用静态分析工具1.5.8使用安全的数据结构1.5.9检查所有的返回值1.5.10审慎地处理内存(和其他宝贵的资源)1.5.11在声明位置初始化所有变量1.5.12尽可能推迟一些声明变量1.5.13使用标准语言工具.1.5.14使用好的诊断信息日志工具1.5.15审慎地进行强制转换1.5.16细则1.6约束1.6.1约束的内容1.6.2移除约束1.7总结1.8另请参见1.9思考1.9.1深入思考1.9.2结合自己第2章精心布局——源代码的版面和样式2.1什么是关键2.2了解你的读者2.3什么是好的样式2.4使用括号2.4.1K&R括号风格2.4.2悬挂式的括号风格2.4.3缩进的括号风格2.4.4其他的括号风格2.5主宰一切的风格2.6内部风格(以及在哪里使用它们)2.7设立标准2.8正义的战争2.9总结2.10另请参见2.11思考2.11.1深入思考2.11.2结合自己第3章名正言顺——为有意义的事物起有意义的名称3.1为什么我们应该恰当地命名呢3.2我们对什么进行命名3.3名字游戏3.3.1描述性3.3.2技术上正确3.3.3符合语言习惯3.3.4恰当3.4具体细节3.4.1命名变量3.4.2命名函数3.4.3命名类型3.4.4命名名字空间3.4.5命名宏3.4.6命名文件3.5玫瑰不叫玫瑰3.5.1保持前后一致3.5.2利用上下文3.5.3使用对你有利的名称3.6总结3.7另请参见3.8思考3.8.1深入思考3.8.2结合自己第4章不言自明——编写“自文档化”代码的技巧4.1自文档化的代码4.2编写自文档化代码的技术4.2.1使用好的样式编写简单的代码4.2.2选择有意义的名称4.2.3分解为原子函数4.2.4选择描述性的类型4.2.5命名常量4.2.6强调重要的代码4.2.7分组相关信息4.2.8提供文件头4.2.9恰当地处理错误4.2.10编写有意义的注释4.3实用的自文档化方法4.3.1文学性编程4.3.2文档化工具4.4总结4.5另请参见4.6思考4.6.1深入思考4.6.2结合自己第5章随篇注释——如何编写代码注释5.1什么是代码注释5.2注释看上去是什么样的5.3多少注释是恰当的5.4注释中应该有些什么5.4.1解释为什么,而不是怎么样5.4.2不要描述代码5.4.3不要取代代码5.4.4确保注释有用5.4.5避免分心5.5实践5.6从审美的角度看注释5.6.1一致性5.6.2清晰的块注释5.6.3缩进的注释5.6.4行尾注释5.6.5帮助你阅读代码5.6.6选择一种维护成本较低的风格5.6.7分隔板5.6.8标志5.6.9文件头注释5.7使用注释5.7.1帮助你编写例行程序5.7.2错误修正通告5.7.3注释过时5.7.4维护和空洞无物的注释5.8总结5.9另请参见5.10思考5.10.1深入思考5.10.2结合自己第6章人非圣贤——处理不可避免的情况——代码中的错误情形6.1从何而来6.2错误报告机制6.2.1不报告6.2.2返回值6.2.3错误状态变量6.2.4异常6.2.5信号6.3检测错误6.4处理错误6.4.1何时处理错误6.4.2可能的反应6.4.3代码示例6.5使地狱浮现6.6管理错误6.7总结6.8另请参见6.9思考6.9.1深入思考6.9.2结合自己第Ⅱ篇代码的神秘生命第7章欲善其事,先利其器——使用工具构建软件7.1什么是软件工具7.2为什么要在意工具7.3使工具发挥作用7.3.1了解它能做些什么7.3.2学习如何驾驭它7.3.3了解它适合什么任务7.3.4检查它是否可用7.3.5找到了解更多信息的途径7.3.6查明新版本何时出现7.4哪个工具7.4.1源代码编辑工具7.4.2代码构建工具7.4.3调试和调查工具7.4.4语言支持工具7.4.5其他工具7.5总结7.6另请参见7.7思考7.7.1深入思考7.7.2结合自己第8章测试时代——测试代码的魔术8.1反思现实8.2谁、是什么、何时以及为什么8.2.1我们为什么要测试8.2.2谁来进行测试8.2.3测试的内容有些什么8.2.4何时进行测试8.3测试并不难……8.4测试的类型8.5选择单元测试用例8.6为测试而设计8.7看!不要用手!8.8面对故障该怎么办8.9你能管理它吗8.9.1缺陷跟踪系统8.9.2bug审查8.10总结8.11另请参见8.12思考8.12.1深入思考8.12.2结合自己第9章寻找缺陷——调试:当事情进展得不顺利时该怎么办9.1生活的真相9.2bug的种类9.2.1从远处看9.2.2从近处看9.2.3从更近处看9.3消灭害虫9.3.1地下之路9.3.2地上之路9.4搜寻bug9.4.1编译时错误9.4.2运行时错误9.5如何修正缺陷9.6预防9.7除蜂剂、驱虫剂、捕蝇纸9.7.1调试器9.7.2内存访问校验器9.7.3系统调用跟踪9.7.4内核转储9.7.5日志9.8总结9.9另请参见9.10思考9.10.1深入思考9.10.2结合自己第10章代码构建——将源代码转换为可执行代码的过程10.1语言障碍10.1.1解释型语言10.1.2编译型语言10.1.3字节编译型语言10.2小题大做10.3构建软件版本10.4怎样才算是一个优秀的构建系统10.4.1简洁10.4.2一致10.4.3可重复和可靠10.4.4原子性10.4.5能够应付错误10.5技术细节10.5.1目标的选择10.5.2内务处理10.5.3依赖关系10.5.4自动构建10.5.5构建配置10.5.6递归地使用make10.6请发布我吧10.7构建大师是全能的吗10.8总结10.9另请参见10.10思考10.10.1深入思考10.10.2结合自己第11章追求速度——优化程序和编写高效的代码11.1优化是什么11.2是什么使代码不尽如人意11.3为什么不进行优化呢备选方案11.4为什么要进行优化11.5优化的具体细节11.5.1证明你需要进行优化11.5.2找出运行得最慢的代码11.5.3测试代码11.5.4优化代码11.5.5优化之后11.6优化的技术11.6.1设计更改11.6.2代码更改11.7编写高效的代码11.8总结11.9另请参见11.10思考11.10.1深入思考11.10.2结合自己第12章不安全感综合症——编写安全的程序12.1危险12.2敌人12.3借口,都是借口12.4感到很脆弱12.4.1不安全的设计和体系结构12.4.2缓冲溢出12.4.3嵌入的查询字符串12.4.4竞争状况12.4.5整数溢出12.5防范措施12.5.1系统安装技术12.5.2软件设计技术12.5.3代码实现技术12.5.4规程技术12.6总结12.7另请参见12.8思考12.8.1深入思考12.8.2结合自己第Ⅲ篇代码的形成过程第13章崇尚设计——如何创作出优秀的软件设计13.1边设计边编程13.2我们要设计什么13.3为什么这么忙乱13.4良好的软件设计13.4.1简洁13.4.2优雅13.4.3模块化13.4.4良好的接口13.4.5可扩展性13.4.6避免重复13.4.7可移植性13.4.8符合语言习惯13.4.9良好地文档化13.5如何设计代码13.5.1设计方法和过程13.5.2设计工具13.6总结13.7另请参见13.8思考13.8.1深入思考13.8.2结合自己...第Ⅵ篇从高处鸟瞰第22章程序秘方——代码开发的方法和过程22.1编程风格22.1.1结构化编程22.1.2面向对象的程序设计22.1.3函数式编程22.1.4逻辑编程22.2烹饪方法:做什么与怎样做22.3开发过程22.3.1混乱22.3.2瀑布模型22.2.3SSADM和PRINCE22.3.4V模型22.3.5原型设计22.3.6迭代和增量开发22.3.7螺旋模型22.3.8敏捷的方法22.3.9其他开发过程22.4已经够了!22.5选择一种过程22.6总结22.7另请参见22.8思考22.8.1深入思考22.8.2结合自己第23章编程领域大观——不同的编程分支23.1应用程序编程23.1.1塑装软件23.1.2定制应用程序23.2游戏编程23.3系统编程23.4嵌入式编程23.5分布式编程23.6网络应用程序编程23.7企业编程23.8数字编程23.9那又怎样23.10总结23.11另请参见23.12思考23.12.1深入思考23.12.2结合自己第24章下一步呢——结果好就一切都好

Tags:编程匠艺-编写卓越的代码,防御性编程,诊断信息日志工具.

应用推荐查看更多
热门下载查看更多
精选应用
点击查看更多
专题合集查看更多
热门专题查看更多
友情链接0