重构-简化条件表达式


  • 分解条件语句 复杂的条件判断抽取为方法
  • 重组条件语句 可使用 ||= ,显式返回等替换条件语句
if !a
   a =  'xxxx'
end
#修改为
a ||= 'xxxx'
  • 合并条件表达式
  if a
    if b
      return 1
    end
  end
  #合并为
  return 1 if a && b
  • 合并重复的条件片段 所有分支都存在的代码,应移出分支
  • 移除控制位 有专门变量控制循环的,应修改为break 或者 return
  • 使用守卫字句替换嵌套条件语句 及早返回,不能处理的尝试逆转条件语句
    def adjusted_capital
     result = 0
     if @capital > 0.0
       if @interest_rate > 0.0 && @duration > 0.0
         result = (@income/@duration) * ADJ_FACTOR
       end
     end
     result
    end
    
    #重构
    def adjusted_capital
     return 0.0 if @capital <= 0.0
     return 0.0 if @interest_rate <= 0.0 || @duration <= 0.0
     (@income/@duration) * ADJ_FACTOR
    end
    
  • 使用多态替换条件语句 将case 的多个判断代码改成多个实现相同方法名的类,条件判断即可改为多态调用。
  • 引入空对象 如果某个对象重复出现判断为空的情况,进行特殊处理;那么可以定义一个空对象类,在对象初始化时如果符合则初始化空对象,空对象实现自己的一套方法。
  • 引入断言 https://www.jianshu.com/p/2d3aaf38cdee