【发布时间】:2016-04-22 19:26:12
【问题描述】:
我想这个问题适用于任何 OO 语言。 根据软件设计指南(1),字段(此处=变量),方法参数列表中的内容,例如
String bikeName;
Wheel wheel1;
Wheel wheel2;
在lots方法中一起使用,例如
firstMethod(String bikeName, Wheel wheel1, Wheel wheel2) ...
secondMethod(String bikeName, Wheel wheel1, Wheel wheel2) ...
根据软件设计,最好将代码重构为具有此字段和方法的 Class Bike:
firstMethod(Bike bike)
secondMethod(Bike bike)
这个操作很简单,甚至可以通过一键式重构功能对任何代码自动完成。
考虑到这种情况,firstMethod 体内有以下内容:
firstMethod(Bike bike){
Wheel rwheel = bike.getRearWheel();
int somePower = rwheel.getPower(); //whatever
secondMethod(bike);
}
secondMethod(Bike bike){
...
Wheel rwheel = bike.getRearWheel();
// or even:
int somePower = rwheel.getPower(); //whatever
}
但在第二个方法中,bike.getRearWheel() 或进一步的 rwheel.getSpeed() 被调用 再次。 为了不两次调用相同的方法(也是软件设计指南),可以将方法更改为
secondMethod(Bike bike, int someSpeed )...
但这可能会变得很麻烦,尤其是在变量丢失的实际情况下,并且违反了准则 (1)。 在实践中你会选择什么变量?
【问题讨论】:
-
不清楚你想要达到什么。给定的示例令人困惑,并且问题包含一些难以理解的错误。
标签: architecture refactoring software-design