ivaneeo's blog

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

  BlogJava :: 首页 :: 联系 :: 聚合  :: 管理
  669 Posts :: 0 Stories :: 64 Comments :: 0 Trackbacks
  • 作法(Mechanics)
    • 找出[你想去除的指针]的保存值域,检查它的每一个用户,判断是否可以去除该指针.
        • ==>不但要检查[直接读取点],也要检查[直接读取点]的调用函数.
        • ==>考虑有无可能不通过指针函数取得[被引用对象](referred object).如果有可能,你就可以对取值函数(getter)使用Substitute Algorithm(139).从而让客户在没有指针的情况下也可以使用该取值函数.
        • ==>对于使用该值域的所有函数,考虑将[被引用对象](referred object)作为引数(argument)传进去.
    • 如果客户使用了取值函数(getter),先运用Self Encapsulate Field(171)将[待除值域]自我封装起来,然后使用Subsitute Algorithm(139)对付取值函数,令它不再使用该(待除)值域.然后编译,测试.
    • 如果客户并使用取值函数(getter),那就直接修改[待除值域]的所有被引用点:改以其他途径获得该值域所保存的对象.每次修改后,编译并测试.
    • 如果已经没有任何函数使用该(待除)值域,移除所有[对该值域的更新逻辑],然后移除该值域.
        • ==>如果有许多地方对此值域赋值,先运用Self Encapsulate Field(171)使这些地点改用同一个设值函数(setter).编译,测试.而后将这个设值函数的本体清空.再编译,再测试.如果这些都可行,就可以将此值域和其设值函数,连同对设值函数的所有调用,全部移除.
    • 编译,测试.
posted on 2005-09-14 15:11 ivaneeo 阅读(238) 评论(0)  编辑  收藏 所属分类: refactoring-从地狱中重生

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


网站导航: