10 2008 档案
摘要:第十章 代码构建将经过处理的高级语言转换成为可以发布的可执行程序的工作,通常称为“构建代码”。构建代码是我们的工作中一个基本的组成部分。许多开发人员都依赖于IDE来构建系统,但是你不能因此而不去了解构建是如何进行的。编程语言有很多中,每一种语言都有其从源代码来构造可执行程序的过程,某些构造模型比其他模型复杂,每种模型都有自己的优势。编程语言从构建的角度来看可以分为三类:解释...
阅读全文
摘要:第九章 寻找缺陷bug是构建软件时不可避免的黑暗面,是生活的一个朴素的真相。在很多情况下,犯错误只是因为没有专注于正在做的事情,大多数bug都是粗心大意造成的。软件的bug可以分为以下几个主要的类别:编译失败。这是你遇到的错误类型中最好的一种,检测到缺陷所需的时间越长,修正它们的成本就越高。运行时崩溃。非预期的行为。这是真正难以处理的错误——你的程序并没有崩溃,而只是准备跳...
阅读全文
摘要:第八章 测试时代不论你觉得自己是一位多么优秀的程序员,发布未经检测的软件都无异于自杀。有太多的软件工厂不是低估了详尽测试的重要性,就是试图把测试挤到发布软件之前的最后一分钟来匆忙的完成。测试是一种重要的代码构建技术。在软件开发中,以下几个术语是经常被混淆的:“错误”:指某件你做错的事,它是一种特定的人类行为,会造成软件包含缺陷。“缺陷”:指错误在软件...
阅读全文
摘要:第七章 欲善其事,先利其器要创造出非凡的代码,不仅需要有技艺精湛的编程高手,还要有好用的工具和灵活运用工具的能力。你使用工具的方式可以看出你是否能称为一名真正多产的程序员,在极端的情况下,这些工具可以提供决定你的项目成功与否的简化操作,软件工厂哪不懈的前进步伐,要求你紧紧抓住任何可以帮助你编写更好的代码,以及更快和更可靠的编写代码的工具。我们用于构建软件的工具多种多样,一般在以下几方面会有所不同:...
阅读全文
摘要:第六章 人非圣贤错误可能而且必将发生。几乎任何操作都会带来意想不到的结果,这种结果与有缺陷的程序中的bug不一样,因为你预先就知道错误会发生。如果你不编写代码来处理这些错误情况,那么你几乎肯定最终会遇到bug;你的程序不会总按你的意愿执行。错误产生得原因可以分为以下三种:用户错误。一个好的程序会指出错误所在,并帮助用户来改正它。程序员错误。由程序员引入的代码缺陷。意外情况。我们需要一个定义良好的策...
阅读全文
摘要:第五章 随篇注释注释非常像意见,你可以随心所欲的做注释,但这仅仅是因为做注释并不意味着这些注释就是正确的。注释可以将优秀的代码和糟糕的代码区分开,将粗糙复杂艰涩难懂的逻辑与清晰友好的算法区分开。但是我们不需要过分夸大注释的作用,如果你已经编写出真正优秀的代码,那么注释就像蛋糕上的糖衣。好的注释是避免让人望而生畏代码的一种策略,注释本身并不能够让糟糕的代码变得好一些。什么是代码注释?从语法的角度来看...
阅读全文
摘要:Windows NT设计小组在项目开始之初确定的设计目标:扩展性。在市场需求变化后能够自如的增长和改变。可移植性。必须能运行在多种硬件体系结构上,出现新的硬件体系结构后,应该可以很容易迁移。可靠性和健壮性。系统应该能够保护自己,不能因内部的错误和外部的篡改而不能工作。应用程序应该无法伤害操作系统或者其他的应用程序。兼容性。和MS之前的操作系统兼容,包括DOS、Winsows98等;要和其他的操作系...
阅读全文
摘要:第三章 名正言顺远古的人认为命名某个事物就是对其拥有权利。这不仅仅是简单的宣称所有权。一些人对名字的力量坚信不疑,以至于他们从不将自己的名字告诉陌生人,因为他们害怕陌生人会使用名字来伤害他。名字所描述的内容包括:1. 身份;2. 行为;3. 识别,名字将一个事物标明为一个性质独特的实体。我们为什么应当恰当的命名呢?因为编写源代码就是关于如何进行清晰的交流,恰当的命名意味着“了解名称就可...
阅读全文
摘要:第一章 善于防守使程序正确和使程序能用的区别:1. 编写在大多数情况下都能用的代码是很容易的,它对常规的输入集会产生常规的输出集;2. 正确的代码绝对不会崩溃,对于所有的输入集,它的输出都将是正确的;3. 并非所有正确的代码都是优秀的代码,因为有些正确的代码的逻辑可能很难理解,难以维护。在编写代码的时候,你会很容易产生很多设想,例如程序应该如何运行、如何调用、如何输入等。我们经常有以下3种常见的设...
阅读全文