51的时候,抽时间看了下该书中的一些重要部分,比如说:代码改善、系统考虑、软件工艺;当时凌乱的记录了一些自己感觉特别的东西,后面周末的时候又看了一些篇章,总结一些感悟吧,算是对这本书做一下推销,嘎嘎!
首先要说一下这本书书名的翻译问题,中文翻译为《代码大全》;其实这并不准确,之所以用这个书名,是因为沿用了该书第一版时用的名字。其实他真实的意思应该是:代码完成!是一个软件项目开发过程中的重要里程碑(Milestone),软件项目进行到这里,表明已经完成了所有的编码和开发测试,即将开始系统测试;书中阐述的要点也就是开发和开发测试这两个阶段的一些方式方法问题,可以见下图中第二、第三阶段;
图1:微软的软件开发最佳实践图
总体来说,这是一本好书,说他好,并不是因为他有多么专业,而是因为,他可以把那些我们都知道的东西通俗系统的表述给总结出来,并进行关键点归纳;我感觉最明显的是:他会让你在看书的过程中感觉非常的轻松,感觉看这本书真的是一种享受!
说这本书好,的确是因为他有很多其他书籍不曾有的东西,比如:
全面的软件构建参考
书中讨论了软件构建活动的方方面面,比如说软件的质量,还有编程的思维方式。它还会深入阐述构建活动中的重要细节,如创建一个类的步骤,使用数据和控制结构时的各种事项,还有调试、重构、代码调优的技术与策略等。你无须逐页通读所有主题,你可以很容易就能找到感兴趣的特定主题。
随时备用的核对表
书中包括了大量的核对表(Check List),你可以用它来评估软件架构、设计方法、类和子程序的质量、变量命名、控制结构、代码格式、测试用例等等。
章节中的要点总结
书中每章的最后都会有一个Key Points的要点总结,可以让你看完该章节的内容之后再结合要点回顾一番;
更多的资源支持
书中每章之后都有一个Additional Resources,说明该章节相关知识点的一些比较好的,可以用来参考的著作;而不是在最后来一个统一的资源参考;
全面的开发语言支持
书中介绍的技术能让你可以更好地利用你的编程语言,无论是C++、C#、Java、Visual Basic,还是其他类似语言,他阐述的是软件构建中的都会遇上的一些问题和方式方法。
丰富的代码示例
书中收集了非常多的用于展现优、劣代码之差异的示例。当然绝大部分都是伪代码,你并不能直接拿来运行;
丰富的理论研究数据
书中涉及到非常多的理论和实际调查结果数据,有些统计和实际运行数据并不是与我们想象中的那么一致,甚至有些结论是完全相悖的;这非常有助于我们开拓自己的视野;
下面我截取了第23章《调试》中的精华部分给大家过过目,呵呵,有兴趣的同事可以向我借这本书哈
关于Debug的Check List
寻找缺陷的方法
u 使用所有可用数据来构造你的假设
u 不断提炼产生错误的测试用例
u 在自己的单元测试族中测试代码
u 借助可以获得的任何工具
u 用不同的方式来重现错误
u 通过产生更多的数据来构造更多的假设
u 利用伪证假设的测试结果
u 用头脑风暴的方式找出可能的假设
u 在桌上放一个记事本,把需要尝试的事情列出来
u 缩小被怀疑有问题的代码区域
u 对之前出现过问题的类和子程序保持警惕
u 检查最近修改的代码
u 扩展被怀疑有额外难题的代码区域
u 采用增量集成
u 检查常见的缺陷
u 和其他人一起讨论你的问题
u 抛开问题休息一下
u 在使用快速肮脏调试法的时候,要设置一个时间上限
u 列出所有的蛮力调试方法,逐条应用
解决语法错误的方法
u 不要太信任编译器信息中给出的行号
u 不要太信任编译器信息
u 不要太信任编译器所给出的第二条出错信息
u 分而治之,各个击破
u 使用具有语法分析功能的编辑器来找出位置错误的注释和引号
修正缺陷的方法
u 在动手之前先理解程序
u 理解整个程序而非具体问题
u 验证对错误的分析
u 放松一下
u 要保存最初的源代码
u 治本,而非指标
u 只有当理由充分的时候才去修改代码
u 一次只做一个改动
u 检查自己所做的修订
u 添加单元测试来暴露代码中的缺陷
u 找出类似的缺陷
调试的一般方法
u 你是否会吧调试看做是能让你更好地理解程序、错误、代码质量和解决问题方法的良机?
u 你是否会避免采用随机尝试查找错误或迷信式的调试方法?
u 你是否假设错误是你自己造成的?
u 你是否利用了科学的方法将间歇性的错误稳定下来?
u 你是否利用了科学的方法来寻找缺陷?
u 你在寻找缺陷的时候会使用多种不同的方法么?还是每次都是用相同的方法?
u 你会验证你的修改是否正确么?
u 你会在调试中使用编译器警告信息、执行性能分析、利用测试框架和交互式调试方式么?
Key Points
调试同整个软件开发的成败息息相关。最好的解决之道是使用本书中介绍的其他方法来避免缺陷的产生。然而,花点时间来提高自己的调试技能还是很划算的,因为优秀和拙劣的调试表现之间的差距至少是10:1。
要想成功,系统化地查找和改正错误的方法至关重要。要专注于你的调试工作,让每一次测试都能让你朝着正确的方向前进一步。要使用科学的调试方法。
在动手解决问题之前,要理解问题的根本。胡乱猜测错误的来源和随机修改将会让你的程序陷入比刚开始调试时更为糟糕的境地。
将编译器警告级别设置为最严格,把警告信息所报告的错误都改正。如果你忽略了明细的错误,那么要改正那些微妙的错误就会非常麻烦。
调试工具对软件开发而言是强有力的支持手段。找出这些工具并加以应用。当然,请记住在调试的时候开动脑筋。