secondrocker
rubydesign
96
CHANGE ME READ TIME
26 Seconds
2020-07-13 02:24
- 分解条件语句
复杂的条件判断抽取为方法
- 重组条件语句
可使用 ||= ,显式返回等替换条件语句
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