随笔分类 - 读书笔记
摘要:1、Right——结果是否正确? 对于测试而言,首要的也是最明显的任务就是查看所期望的结果是否正确——验证结果。 对于许多有大量测试数据的测试,考虑用一个独立的数据来存储测试数据,然后让单元测试读取该文件。不过需要多注意一下测试数据。不管是文件中的还是代码中的测试数据,都很有可能是不正确的。实际上,经验告诉我们,测试数据比代码更有可能是错的,特别是人工计算的,或者来自原有系统计算结果的测试数据。因此,当测试数据显示有错误发生的时候,你应该在怀疑代码前线对测试数据检查两三遍。2、B——是否所有的边界条件都是正确的? 找边界条件助记短语CORRECT Conformance(一致性)——值是否和预
阅读全文
摘要:在我看来,现在的IT环境下做软件开发混的不错的必要条件不是掌握如何如何技能,个人内在的性格和习惯会占很大的因素,虽然《代码大全》这本书将个人性格放在第33章,讲的篇数不过寥寥十几页,但很久说性格其实无所谓。诚然个体间性格差异很大,但作为一个优秀程序员其优秀品质却是大同小异的。假如你是软件工程师,基本的建造材料就是你的聪明才智,主要工具就是你自己。建筑工程师对建筑物机构进行详细的设计,然后将设计蓝图交给其他人施工:而你一旦从细节上对软件做好设计后,软件就生成出来了。变成的整个过程如同建造空中楼阁一样——这是人们能做的纯粹脑力劳动之一。求知欲 在开发过程中建立自我意识 你越了解软件开发过程,无论.
阅读全文
摘要:1、有效建模的要素模型和实现的绑定获得了一种基于模型的语言开发一个蕴含丰富知识的模型提炼模型2、知识消化 在传统的瀑布方法中,业余专家与分析员进行讨论,分析员消化理解这些知识后,对其进行抽象并将结果传递给程序员,再由程序员编写软件代码。由于这种方法完全没有反馈,因此总是失败。分析员全权负责创建模型,但他们创建的模型只是基于业务专家的意见。他们既没有向程序员学习的机会,也得不到早起软件版本的经验。知识只是朝一个方向流动,而且不会形成积累 有些项目使用了迭代过程,但由于没有对知识进行抽象而无法建立起知识体系。开发人员听专家们描述某项所需的特性,然后开始构建它。他们将结果展示给专家,并询问接下来做什
阅读全文
摘要:1、实体(引用对象) 对象建模倾向于引导我们将精力集中于对象的属性上,但实体的基本概念就是一种抽象的连续性。这种连续性贯穿了对象的整个生命周期,甚至要经历多种实现形式。 有些对象并不主要是由他们的属性来定义的。它们体现了标识在时间上的延续性,经常要精力多种不同的形态。有时,一个对象与另一个对象有着不同的属性,但它们是互相匹配的;有时,一个对象与另一个对象有着不同的属性,但它必须能够跟那么对象区分开来,弄错对象标石会导致数据破坏。2、值对象 如果我们只关心模型中一个元素的属性,那么久把这个元素划分为值对象。用它来描述它要表述的那些属性的意义,并提供相应的功能。把值对象看成是不可变的。不要给它任何
阅读全文
摘要:1、分层架构 在面向对象的程序中,用户界面(UI)、数据库和其他支持代码,经常被直接写到业务对象中去。在UI和数据库脚本的行为中嵌入额外的业务逻辑。出现这种情况是因为从短期的观点看,它是使系统运行起来的最容易的方式。 当与领域相关的代码和大量的其他代码混在一起时,就很难阅读并理解了。对UI的简单改动就会改变业务逻辑。改变业务规则可能需要小心翼翼地跟踪UI代码、数据库代码或者其他的程序元素。实现一致的模型驱动对象变得不切实际,而且自动化测试也难以使用。如果在程序的每个行为中包括了所有的技术和逻辑,那么它必须很简单,否则会难以理解。2、模型属于领域层 如果一个没有经验的开发团队,决定尝试试用一个使
阅读全文