ivaneeo's blog

自由的力量,自由的生活。

  BlogJava :: 首页 :: 联系 :: 聚合  :: 管理
  669 Posts :: 0 Stories :: 64 Comments :: 0 Trackbacks
作法(Mechanics)
    • 如果field的属性是public,首先使用Encapsulate Field(206)将它封装起来。
        • ==》如果你有可能移动那些频繁访问该field的函数,或如果有许多函数访问某个field,先使用Self Encapsulate Field(171)也许会有帮助。
    • 编译,测试。
    • 在target class中建立与source field相同的field,并同时建立相应的设值/取值(setting/getting)函数。
    • 编译target class。
    • 决定如何在source object中引用target object。
        • ==》一个现成的field或method可以助你得到target object。如果没有,就看能否轻易建立这样一个函数。如果还不行,就得在source class中新建一个field来存放target object。这可能是个永久性修改,但你也可以暂不公开它,因为后续重构可能会把这个新建field除掉。
    • 删除source field。
    • 将所有[对source field的引用]替换为[对target适当函数的调用]。
        • ==》如果是[读取]该变量,就把[对source field的引用]替换为[对target取值函数(getter)的调用];如果是[赋值]该变量,就把[对source field的引用]替换成[对设值函数(setter)的调用]。
        • ==》如果source field不是private,就必须在source class的所有subclasses中查找source field的引用点,并进行相应替换。
    • 编译,测试。
posted on 2005-08-30 14:31 ivaneeo 阅读(107) 评论(0)  编辑  收藏 所属分类: refactoring-从地狱中重生

只有注册用户登录后才能发表评论。


网站导航: