可度量的代码异味

  • 注释
  • 过长的方法
  • 过大的类
  • 过长的参数列表

注释

代码当中出现注释来解释代码,出现注释可能原因是作者认为某些内容没有说清楚,需要增加注释。有些注释比较有用:

  • 之处为什么要使用特定的方式完成某个工作
  • 引入了不常见的算法

其他啰嗦的代码注释可以通过代码来自解释。

如果注释过多,可以采取如下方式优化:

  • 如果一条注释是对一个代码块的解释,一般可以使用抽取方法(Extract Method)将这个代码块提出来,放到单独的方法当中,并且赋予一个跟注释含义相同的方法名。
  • 如果一条注释解释了一个方法做的工作,那么直接重命名这个方法,根据注释来指定新的方法名。
  • 如果一条注释是前提条件,则可以考虑使用引入断言,把注释替换为代码。

过长的方法

一个方法当中代码的行数超过了50行甚至上百行,这段方法的代码一定可以进行优化。如果方法代码太多可以进行如下优化:

  • 使用抽取方法将方法分解为更小的部分。

一般对大方法进行拆分会暴露重复性问题,通常有助于建立新的类和抽象。

过大的类

过大的类的存在往往是一次增加一点代码,不断的像这个类添加新的功能,一般过大的类会存在大量实例变量,大量方法,大量代码行。

一般来说,过大的类需要进行分解,如果类存在过长的方法,就应该先解决掉。分解类有如下方法:

  • 抽取类:将不是这个类的职责放到新的类当中
  • 抽取父类:将公共逻辑抽取到父类当中执行
  • 抽取接口:如果可以确定某些方法属于一些特性的时候

过长的参数列表

通过一个方法有超过 5 个参数,并且方法参数名称写的不规范,还有相同类型的参数顺序相邻,这样的话就会导致使用这个方法很困难。一般可以如下优化:

  • 如果参数可以由另外一个已知的对象得到,则可以将参数替换为方法。
  • 如果参数来自一个对象,那么可以传递完整的对象。
  • 如果参数不是来自一个逻辑对象,这扔需要通过引入参数对象将其分组。

【参考资料】

  1. 重构手册

—EOF—