Design patterns “重构多个”;如果;声明
我最近开始为我的工作编写更多的程序。虽然我通常可以完成工作,但我的代码对我来说并不“好闻” 我如何正确地重构如下内容:Design patterns “重构多个”;如果;声明,design-patterns,language-agnostic,refactoring,Design Patterns,Language Agnostic,Refactoring,我最近开始为我的工作编写更多的程序。虽然我通常可以完成工作,但我的代码对我来说并不“好闻” 我如何正确地重构如下内容: def functiona() def functionb() def functionc() def functionn() if (a){ functiona } elif (b){ functionb } etc, etc, etc, 对于某些上下文,我接收了一个大型XML文件,其中每个对象
def functiona()
def functionb()
def functionc()
def functionn()
if (a){
functiona
}
elif (b){
functionb
}
etc, etc, etc,
对于某些上下文,我接收了一个大型XML文件,其中每个对象都有一个联系人字段,该字段的格式根据对象的另一个属性(即代理)而不同,然后我使用了所有这些函数来解析联系人字段。设计模式将是对象状态模式: 在OO语言中,这将是一组不同的类,每个类实现相同的接口,您根据“状态”创建一个适当的实例,该实例完成所有处理,直到“状态”更改。然后它被销毁,并创建一个不同的实例 在非OO语言中,可以使用指向具有一组签名的函数的指针来完成,并且“状态”指示指针指向几个函数中的哪一个
这两种技术都非常灵活,但通常比简单的
if
语句更难遵循。也就是说,由于读者疲劳和代码盲,大量的if
往往容易出错……OO语言?依赖于“代理”的多种事物?您的代码还可以,替代方案可能是更多的代码而不是更透明的代码……我正在使用groovy来处理这段特定的代码,但我通常很好奇是否有一种设计模式来处理这段代码。我想我的主要问题是那些奇怪的“如果”语句。基本上,只有联系信息是正在改变的格式,其他一切似乎都是普遍标准化的。“用什么替换条件?”的标准答案是多态性。我不确定它是否适用于这里,但它总是值得考虑的。谢谢,这看起来像我一直在寻找的。对于我的用例来说可能不值得这么做,但在将来知道会很好。