两段代码只有几行不一样,且分散,如何优化?
比如:
if d_m > d_o: d1 = d_m
sf_0 = scale_factor * 0.5
sf_1 = scale_factor
for i in range(20):
# ... 省略
if d < d1:
# ... 省略
sf_0 = sf
else:
sf_1 = sf
break
else:
d1 = d_o
sf_0 = 0
sf_1 = scale_factor * 0.5
for i in range(20):
# ... 省略
if d < d1:
# ... 省略
sf_1 = sf
else:
sf_0 = sf
break
相似度很高,但逻辑顺序不能变,这种能优化吗?
回答:
d1, sf_0, sf_1 = (d_m, scale_factor * 0.5, scale_factor) if d_m > d_o else (d_o, 0, scale_factor * 0.5)for i in range(20):
# ... 省略
if d < d1:
# ... 省略
sf_0 = sf
else:
sf_1 = sf
break
回答:
def common(d1_v, sf_0_v, sf_1_v, d, sf, dm_gt_do): d1 = d1_v
sf_0 = sf_0_v
sf_1 = sf_1_v
for i in range(20):
# ... 省略
if d < d1:
# ... 省略
sf_0 = sf if dm_gt_do else sf_1 = sf
else:
sf_1 = sf if dm_gt_do else sf_0 = sf
break
if d_m > d_o:
common(d_m, scale_factor * 0.5, scale_factor, d, sf, True)
else:
common(d_o, 0, scale_factor * 0.5, d, sf, False)
以上是 两段代码只有几行不一样,且分散,如何优化? 的全部内容, 来源链接: utcz.com/p/939090.html