我最近为我的工作开始编程更多。虽然我通常可以完成工作,但我的代码并没有“闻到”我的权利。
我如何正确地重构这样的事情:
def functiona()
def functionb()
def functionc()
def functionn()
if (a){
functiona
}
elif (b){
functionb
}
etc, etc, etc,
对于某些上下文,我正在提取一个大的XML文件,该文件的每个对象都有一个联系人字段,根据对象的另一个属性(即代理)的格式不同,然后我将所有这些函数都设置为解析联系人字段。
答案 0 :(得分:3)
设计模式将是对象状态模式:wiki State_pattern。
在OO语言中,这将是一组不同的类,每个类实现相同的接口,并且您基于“状态”创建适当的实例,并且该实例完成所有处理,直到“状态”发生更改。然后它被销毁并创建了一个不同的实例。
在非OO语言中,可以通过指向具有设置签名的函数的指针来完成,而'state'指示指针指向的几个函数中的哪一个。
这两种技术都非常灵活,但通常比简单的if
语句更难以遵循。也就是说,由于读者疲劳和代码失明,大量if
经常容易出错......