先说几点常识, 再讨论几个技巧if else 的层数反应的是代码的复杂程度, 这个层数可能是偶然复杂度, 不见得是必要复杂度
所谓化简, 无非就是理解这坨代码引入的偶然复杂度(也就是非必要复杂度), 最后化简为必要复杂度的代码
化简的核心, 就在于函数要清晰清晰清晰, 写的人要理解要理解要理解背后的逻辑, 至于什么策略模式啥的都是小技巧罢了
如果必要复杂度就是那样, 那么无法化简, 也无法优化如果可以的话, 一定要补充上单元测试, 确保最上层函数的输入和输出是一致的之后, 再去重构
我在我的专栏 中写过这一点, 这里介绍几个技巧
无与童比:如何写出整洁的 Python 代码 中篇zhuanlan.zhihu.com
技巧一 通过提前判断, 避免过深的缩进
场景,你在做一个 B2B2C 的商城系统。商家的活动需要在某些比较严格的条件下才能参与(假设有五个字段吧)。
如果不动手捋一捋判断的路径,上来就动手写代码,则很容易写出如下的代码。
if cond1:
dosomething()
if cond2:
dosomething()
if cond3 and cond4:
dosomething()
else:
dosomething()
if condx:
dosomething()
else:
if cond2:
dosomething()
if cond3 and cond4:
dosomething()
if condx:
dosomething()
想想你这个时候才判断了 5 个字段... 如果想都不想就开