Extract Class(提炼类)

Extract Class(提炼类)

  • 一个类是一个清楚的抽象,处理一些明确的责任
  • 随着类的扩展,将相关变量和相关函数提炼成一个独立类

Message Chains (过度耦合的消息链)

  • 隐藏委托关系,对象A->B->C ==>> A->B(k->C) ,在B对象中建立委托函数调用C
  • 消息链未必需要重构

Rename Method (函数改名)

  • 函数名称应该清晰表达其用途,切不可将就
  • 可减少不必要繁琐的 注释

单元测试和功能测试

  • 测试是一种风险驱动的行为
  • 单元测试 (程序员的好朋友) 目的是为了提高程序员的生产率,暴露程序中的bug
  • 功能测试目的是保证软件能够正常运作,把整个系统当作一个黑箱,不需要知道代码细节,从功能实现整体出发

Inline Temp (内联临时变量)

  • 只被一个简单表达式赋值一次的临时变量,妨碍了一些重构手法
  • 可将所有对该变量的引用动作,替换为对它赋值的那个表达式自身

Remove Assignments to Parameters (移除对参数的赋值)

  • 代码对一个参数进行赋值,以一个临时变量取代该参数的位置
  • int A; A=2; —> int B=A; B=2;

Replace Subclass with Fields (以字段取代子类)

  • 建立子类目的:增加新特性或变化行为,but 子类的变化行为只有“常量函数” ,无子类继承父类的体现价值
  • 在父类中建立与子类“常量函数”的返回值相应的字段,从而完全去除子类,可避免不必要的继承带来的额外复杂性

List of point(要点列表)

  • 重构:对软件内部结构的一种调整,目的是在不改变软件可观察行为的前提下,提高其可理解性,降低其修改成本

  • 重构前,先检查自己是否有一套可靠的测试机制,这些测试必须有自我检验能力,事不过三,三则重构

  • 频繁的运行测试,每次编译请把测试考虑进去

  • 当你收到bug报告,请先写一个单元测试来暴露这个bug

  • 千万不要因为测试无法捕捉所有bug就不写测试

  • 重复考虑可能出错的边界条件

  • 当一段代码被认为应该会出错时,请检查是否抛出了预期的异常

  • 写出计算机可以理解的代码很容易,唯有写出让人类容易理解的代码才是优秀的程序员
    溜~~^ -^

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值