1
2
对于您目前所介绍的内容,我倾向于将三个参数分离出来,每个参数都有自己的函数,因此:
这有点手工制作的(不适合在规则更改时半自动更新),而且效率略低(一些条件正在检查,一些字段被引用,多次,当然还有更多的函数调用)。我认为只有当你有了一个已经证明的问题(当你这样做的时候,需要比这些更大的改变),效率才是重要的,而且这种方法让你确切地知道当给定参数的规则改变时,要看什么样的代码。我不相信多态性会在这里引导您找到一个好的解决方案。 |
2
2
为了应用一个策略,它需要在对象中有选择策略的数据。你从经纪人、经纪人的交易阶段和一个按钮中提取数据。 要与多态性结合使用,需要三次调度,而且比当前的代码复杂得多。 您可能希望按阶段分离,并应用Demeter。 还有很多神奇的数字。如果您正在从一个系统转换到另一个系统,那么将它们转换为要转换的系统的常量,否则将它们移动到数据模型中。 |
3
2
在不了解更多代码的情况下很难说,但问题似乎是您试图在方法中做不止一件事,而且,在这样一个数据方法中,代码依赖于UI看起来很难看。 似乎您至少应该有两种方法,一种是getbrokerprice,另一种是setpriceoptions |
4
2
我们想到了两个明显的重构:
如果需要,可以重新排序if块以组合
这些重构使得应用下面的重构更加容易。
}
现在您有一个小if块的长列表。这可以重构为
另一种方法是为phase==1和phase==2创建单独的列表,并从
我想我更喜欢后者,因为它使
其他重构可以替换
将来,可以动态地填充列表,例如加载程序集时。然后可以通过配置设置控制要加载的程序集。Presto:切换行为而不重新编译核心代码!
PS:代码没有经过测试,因为我现在离编译器很远。请随意编辑我的答案以删除语法错误,添加声明
|
5
1
在我看来,函数所做的只是设置
至于嵌套的if else,我不太担心。
|
Vedant · 如何解决python啦啦队长问题?[已关闭] 2 年前 |
cobby · 在战略模式中使用工厂模式? 2 年前 |
Nobody · Java中带while循环的三角形模式 2 年前 |
Eduard Stefanescu · 如何在层之间传输异常? 6 年前 |
D. Schreier Talha Noyon · 对于目录中的每个类 6 年前 |
Tanvi Jaywant · 如何重载类 6 年前 |