4.7 引入NULL对象】的更多相关文章

[1]引入NULL对象范例 Book.h #ifndef _BOOK_H #define _BOOK_H #include <string> using namespace std; class INULLOperator { public: ; }; class Book : public INULLOperator { public: Book(); Book(int id, string name, double dprice); bool isNull(); string getNam…
描述:有两个类,学生类和导师类,学生的导师类可能不存在,因此在获取学生导师名字等信息时都要先判断导师名字是否为空.重构后通过一个空导师类来处理导师为空的相应逻辑. Before # introduce null object class Master: def __init__(self): pass def setValue(self, name, major, age): self.name = name self.major = major self.age = age def getNa…
前言 最近在读<Thinking in Java>,看到这样一段话: Primitives that are fields in a class are automatically initialized to zero, as noted in the Everything Is an Object chapter. But the object references are initialized to null, and if you try to call methods for an…
Null Object Pattern http://groovy-lang.org/design-patterns.html#_loan_my_resource_pattern 对于一些场景获得的对象为 null, 然后我们的使用的场景, 对null对象调用正常对象的方法, 导致报错. 因为null对象,没有对应的方法. The Null Object Pattern involves using a special object place-marker object representin…
原文链接:http://www.cnblogs.com/lezhou2014/p/3955536.html "equals" 与 "==" "equals"只是比较值是否相同 而"=="则是比较两个变量是不是同一个变量,也应时是说要看看这两个变量是不是引用的同一个地址,java 中只有引用地址相同的两个变量才被视为==如果明白值传递与地址传递的话,这个问题应该不难理解 "a==null" 与 "n…
当一个方法的参数超过3个以上,就可以考虑将参数封装成一个对象.将参数封装成对象后提高了代码的可读性,并且该参数对象也可以供多个方法调用,以后如果增加删除参数,方法本身不需要修改,只需要修改参数对象就可以.   重构前代码 public class Registration { public void Create(decimal amount, Student student, IEnumerable<Course> courses, decimal credits) { // do work…
坏味道--临时字段(Temporary Field) 特征 临时字段的值只在特定环境下有意义,离开这个环境,它们就什么也不是了. 问题原因 有时你会看到这样的对象:其内某个实例变量仅为某种特定情况而设.这样的代码让人不易理解,因为你通常认为对象在所有时候都需要它的所有变量.在变量未被使用的情况下猜测当初设置目的,会让你发疯. 通常,临时字段是在某一算法需要大量输入时而创建.因此,为了避免函数有过多参数,程序员决定在类中创建这些数据的临时字段.这些临时字段仅仅在算法中使用,其他时候却毫无用处. 这…
坏味道--Switch声明(Switch Statements) 特征 你有一个复杂的 switch 语句或 if 序列语句. 问题原因 面向对象程序的一个最明显特征就是:少用 switch  和 case 语句.从本质上说,switch 语句的问题在于重复(if 序列也同样如此).你常会发现 switch 语句散布于不同地点.如果要为它添加一个新的 case 子句,就必须找到所有 switch 语句并修改它们.面向对象中的多态概念可为此带来优雅的解决办法. 大多数时候,一看到 switch 语…
原文作者:kkun 原文地址:http://www.cnblogs.com/kkun/archive/2011/07/06/agile_software_development.html 敏捷是什么 敏捷开发是一种软件开发方法,基于迭代和增量开发,通过自组织,跨团队,沟通协作完成开发工作. 敏捷宣言的诞生 2001年2月11日到13日,17位软件开发领域的领军人物聚集在美国犹他州的滑雪胜地雪鸟(SnowBird)雪场.经过两天的讨论,“敏捷”(Agile)这个词为全体聚会者所接受,用以概括一套全…
定义 重构的定义:在不改变软件可观察行为的前提下,改善其内部结构. 其中,不改变软件行为,是重构最基本的要求.要想真正发挥威力,就必须做到“不需了解软件行为”. 如果一段代码能让你容易了解其行为,说明它还不是那么迫切需要被重构. 需要重构的代码,你只能看到其中的“坏味道”,接着选择手段消除这些“坏味道”,然后才有可能理解他的行为. 构建测试体系 确保每个类每个方法都有对应的测试代码.一套测试就是一套BUG检测器,能够大大缩减查找BUG所需时间. 编写测试代码最有效的时机,实在开始编程以前.能使你…