|
2
|
| Jacobs Data Solutions · 技术社区 · 15 年前 |
|
|
1
2
是的,我称之为以下代码气味:
当集合正在更改时,您正在对其进行迭代。我是说第一次迭代,不是第二次。很明显你在考虑变化(因此
我可以让它进入生产代码吗?可能。视情况而定。但我会觉得很肮脏。
还有:你的
|
|
|
2
1
这里最大的潜在问题是
.NET BCL类不允许在迭代时更改集合。代码的结构方式暴露了这种情况可能发生的风险。 除此之外,另一个问题是程序的结构使得很难理解按什么顺序发生的事情。也许您可以将递归组装模型的程序阶段与访问模型并执行计算的部分分开。 |
|
|
3
0
+一个给兰多尔夫和尔布什金。 不过,我想了想,我知道为什么会有这种味道。我所实现的模式似乎是对构建器模式的某种歪曲。更好的方法是用一系列分析步骤创建一个组合,这些步骤作为一个整体,代表某种有意义的状态。分析过程(行为)的每个步骤都应该不同于输出组合(状态)。我在上面实现的将状态和行为结合在一起。由于国家所有者和国家分析者是同一客体,这也违反了单一责任原则。使用复合“构建自身”的方法打开了创建恶性循环的可能性,尽管我上面的原型已经确定完成。 链接: |