想象一下以下将布尔值转换为 int 的方法:
def bool_to_int(bool)
bool ? 1 : 0
end
bool_to_int(false) # => 0
bool_to_int(true) # => 1
由于有条件,圈复杂度得分为 2。通过使用 Ruby 中的改进,分数会降到 1 吗?:
module Extension
refine FalseClass do
def to_int; 0; end
end
refine TrueClass do
def to_int; 1 end
end
end
using Extension
false.to_int # => 0
true.to_int # => 1
换句话说; 动态调度会降低圈复杂度分数,还是我们只是通过让 Ruby 做“繁重的工作”来隐藏复杂性?