两段代码只有几行不一样,且分散,如何优化?

两段代码只有几行不一样,且分散,如何优化?

比如:

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

回到顶部