摘要: 第四章 我们能更有效地思考吗 4.1 为什么人们根本不思考 以下是一些人们不思考的常见原因: 有人不愿意人们思考, 所以故意使用诸如"所有的", "永远", "每个", "显而易见"这样的"催眠词"来麻痹人们, 从而扼杀思考. 清醒的人们应该把这些"催眠词"看做触发器, 一碰到它们, 就应该好好思考一下. 思考会使人疲倦, 因此也可能妨碍其他的思考. 思考本身是一件费时而昂贵的事情. 如果对任何事... 阅读全文
posted @ 2011-08-09 21:38 李嘉 (Justin) 阅读(259) 评论(0) 推荐(0) 编辑
摘要: 前言 所谓"prefessional", 是指在特定的活动领域里, 具备了不起的技艺或经验. 专业人士——无论是医生, 运动员, 还是程序员——进行自我考察, 不是为了惩罚自己, 而是为了获得自我提升. 第一章 对专业人士来说, 有哪些重要问题 1.1 成为一个程序员要花多久时间 现在的世界常常有这样一个误解: 任何人, 只要经过短期而速成的培训, 就能成为一个专业程序员. 造成这种误解主要有两个... 阅读全文
posted @ 2011-08-09 21:30 李嘉 (Justin) 阅读(732) 评论(1) 推荐(1) 编辑
摘要: 第1章 基本概念 本章我们学习一下Subversion(简称SVN)的一些基本概念。 Repository Repository是指数据的中央存储仓库。Repository以filesystem tree的形式存放信息。若干clinet(客户端)连接到repository并读、写文件,因此SVN是一个典型的client/server架构。 Lock-Modify-Unlock方案 使用SVN进行版... 阅读全文
posted @ 2011-08-02 06:44 李嘉 (Justin) 阅读(2960) 评论(0) 推荐(1) 编辑
摘要: 第五章 如何开发测试用例 5.1 开发测试用例的基本策略 在软件测试中, 有两种不同的测试思路, 它们分别是功能性测试和结构性测试. 功能性测试, 也称为黑盒测试, 其基本理念是: 任何程序都可以被看作是将输入定义域取值映射到输出值域的函数. 采用功能性测试来开发测试用例, 唯一使用的信息是软件的规格说明. 结构性测试, 也称为白盒测试, 即测试人员将根据功能实现的方式来开发测试用例. 功能性测试... 阅读全文
posted @ 2011-07-17 20:45 李嘉 (Justin) 阅读(824) 评论(0) 推荐(0) 编辑
摘要: 第四章 高质量的测试代码 4.1 测试代码同样要有高质量 有的开发人员认为, 测试代码不是交付给最终用户的产品代码, 只是内部测试使用的, 因此其质量比产品代码低一点也无可厚非. 我们认为这是一个错误的观点. 首先, 虽然测试代码不会被交付给最终用户, 但它同样是交付代码, 它将被交付给下一代维护程序员, 而这些维护程序员, 很有可能就是我们自己. 因此, 为了让我们自己和其他程序员今后的生活轻松... 阅读全文
posted @ 2011-07-17 20:43 李嘉 (Justin) 阅读(1422) 评论(0) 推荐(0) 编辑
摘要: 第三章 单元测试的工具——测试框架 3.1 常用的单元测试框架 工欲善其事, 必先利其器. 程序员在写单元测试代码时, 如果能借助一些单元测试框架, 那么使单元测试代码的书写、维护、分类、存档、运行和结果检查变得更为容易, 从而成倍地提高工作效率. 在本章中, 我们就将学习两种单元测试的框架. 第一种, 就是鼎鼎大名的xUnit测试框架家族. xUnit测试框架有助于我们更加结构化地书写测试代码,... 阅读全文
posted @ 2011-07-01 19:19 李嘉 (Justin) 阅读(2420) 评论(0) 推荐(0) 编辑
摘要: 第二章 单元测试的基本概念和核心技法 2.1 良好的单元测试——定义 我们已经了解了程序员需要单元测试, 下面我们来给单元测试作一个完整的定义: 定义: 单元测试是一段自动执行的代码, 它调用被测类或被测方法, 然后验证关于被测类或被测方法逻辑行为的假设确实成立. 单元测试几乎总是用单元测试框架(unit testing framework)来写就的, 单元测试是易于写就、执行快速、完全自动化、值... 阅读全文
posted @ 2011-06-23 15:07 李嘉 (Justin) 阅读(2375) 评论(1) 推荐(1) 编辑
摘要: 第一章 为什么使用单元测试 1.1 程序员的工作——修改软件 修改既有代码是程序员谋生的手段. 但是为什么我们需要去修改软件呢? 修改软件有以下4个主要起因: 修正bug 添加新特性(feature) 改善设计 优化资源使用 这4项都与软件的"行为"密切相关, 见下表. 软件的既有行为 软件的新行为 修正bug 改变软件的既有行为 增加新行为 添加新特性 保持软件的既有行为, 完全不修改既有代码 ... 阅读全文
posted @ 2011-06-23 15:03 李嘉 (Justin) 阅读(370) 评论(0) 推荐(0) 编辑
摘要: 第17章 Composite模式 我们常常会软件世界中观察到这样一种现象:把同种物体组合之后得到的组合物体跟构成它的单独的物体在行为上没有发生变化。举些例子来说明:如果你有几幅图片,你可以把它们组合起来形成一幅更大的图片;如果你有几个代数算式,你可以把它们组合起来形成一个更复杂的算式;如果你有几个2维图形,你可以把它们组合起来形成一个更大的2维图形;如果你有几条命令,你可以把它们组合起来形成一个更... 阅读全文
posted @ 2011-05-15 18:51 李嘉 (Justin) 阅读(206) 评论(0) 推荐(0) 编辑
摘要: 第15章 Adapter模式 Adapter模式是一种简单的模式。当我们需要使用一个现成的类,但它的接口又跟要求的接口有出入时,我们就使用Adapter模式把这个现成的类适配到目标接口。我们下面来看一个具体的例子。 假设我们在开发一个2维图形程序。在这个程序中,需要乃至若干形状类,如点、直线和矩形。为了给这些开关类建模,我们设计了一个Shape接口,如下所示。 现在新的需求来了。我们希望加入对圆形... 阅读全文
posted @ 2011-05-15 18:47 李嘉 (Justin) 阅读(199) 评论(0) 推荐(0) 编辑