重构阅读笔记1

1、 Decompose Conditional(分解条件式)
    面对复杂的条件(if-else if-else...)语句时,
——从if,then,else三个段落中分别提炼出独立函数。

2、 Extract Class(提炼类)
    某个Class做了应该由两个Class做的事。
——建立一个新Class,将相关的值域和函数从旧Class搬迁到新Class

3、 Extract Interface(提炼接口)
    若干客户使用Class接口中的同一子集;或者,两个Class的接口有部分相同
——将相同的子集提炼到一个独立接口中
(建议先运用Extract Class先把共通行为放进一个组件中,然后将工作委托该组件,从而解决这个问题)

4、 Extract SuperClass(提炼超类)
   两个Class有相似特性
——为这两个Class建立一个SUperClass,将相同特性移至进superClass

5、 Introduce Parameter Object(引入参数对象)
   某些参数总是很自然的同时出现
——以一个对象取代这些参数(把Range Class设为不可改变,也即其中所有值域都是final的,只能由构造函数来赋值)

6、 Preserve whole Object(保持对象完整)
   你从某个对象中取出若干值,将他们作为某一次函数调用时的参数。
——改使用传递整个对象
   甘蔗不曾两头甜,如果这个会使你的依存结构恶化,那么就不应该使用)

拓展:
   如果被调用函数使用了来自另外一个对象的很多数据,这可能意味这该函数实际上应该被定义在那些数据所属的对象中。 所以考虑preserve whole Object的同时,你也应该move Method, 运用本次重构前若还没有定义一个完整对象,那么就请使用Introduce Paramter Object。

7、 Inline Class(将类内聚化) 与Extract Class相反
   你的某个Class没有做太多的事情(没有承担足够责任)
——将class中的所有特性搬迁到另一个class中,然后移除原class

8、 Replace Type Code with Class(以类取代型别码)
——以一个新的Class替代该类数值型别码
  
9、 Introduce Null Object(引入Null对象)
  你需要再三检查某物是否为null Value
——将null Value(无效值) 替换为null object(无效物)
null objects一定是常量,它们的任何成分都不会发生变化,因此我们可以使用单例模式来实现它们。


10、 Remove Parameter(移除参数)
   函数本体(method body)不再需要某个参数
——将该参数移除

你可能感兴趣的:(数据结构,工作)