我正在做一个涉及“构建”SQL的项目。
作为构建过程的一部分,我经常会遇到这样的情况:一个构建方法在计算时考虑了很多布尔条件(或标志)。
这通常会导致该方法看起来像一个很大的if/elif/else树(请考虑这段明显不好的代码):
def build(a:bool, b:bool, c:bool, d:bool, e:bool): output = ... if a: if b: if c: pass # mutate output else: pass # mutate output else: if c: if d: pass # mutate output else: pass # mutate output else: if d: pass # mutate output else: pass # mutate output elif e or b: pass else: pass return output
我问你的问题是,你将如何重构这样的代码?
我正在寻找某种设计模式或类似的方法来制作代码:
- 可读性更强
- 支持现在“构建”应该考虑新标志的情况(只要项目进展我们发现了新的情况/特性,我们就希望添加到计算中)。
- 很容易测试
我的项目是用python 3.8编写的,但我认为这是一个可能与任何其他编程语言相关的通用问题。