小编Ste*_*ens的帖子

需要重构Arrow Anti-Pattern的想法

我继承了一个怪物.

它伪装成.NET 1.1应用程序处理符合医疗保健索赔支付(ANSI 835)标准的文本文件,但它是一个怪物.正在处理的信息涉及医疗保健索赔,EOB和报销.这些文件包含在前几个位置具有标识符的记录,以及根据该类型记录的规范格式化的数据字段.一些记录ID是控制段ID,它分隔与特定类型的事务相关的记录组.

为了处理文件,我的小怪物读取第一条记录,确定即将发生的交易类型,然后根据当前正在处理的交易类型开始处理其他记录.为此,它使用嵌套的if.由于存在多种记录类型,因此需要做出许多决定.每个决策都涉及一些处理和2-3个其他需要根据以前的决策做出的决定.这意味着嵌套if有很多巢.这就是我的问题所在.

这个嵌套if是715行长.恩,那就对了.七百五十条青少年线.我不是代码分析专家,因此我下载了几个免费软件分析工具,并得出了McCabe Cyclomatic Complexity评级为49.他们告诉我这是一个非常高的数字.在亚特兰大地区的花粉数量很高,其中100是高标准,新闻称"今天的花粉数量是1,523".这是我见过的箭头反模式最好的例子之一.在最高处,压痕深度为15个标签.

我的问题是,你建议采用什么方法来重构或重组这样的东西?

我花了一些时间寻找想法,但没有什么能给我一个良好的立足点.例如,用保护条件代替等级是一种方法.我只有其中一个.一窝下来,十四去.

也许有一种设计模式可能会有所帮助.指挥链会成为接近这个的方法吗?请记住,它必须保留在.NET 1.1中.

感谢您提出的所有想法.

refactoring if-statement nested anti-patterns

12
推荐指数
2
解决办法
1897
查看次数

标签 统计

anti-patterns ×1

if-statement ×1

nested ×1

refactoring ×1