0
我想这个问题适用于任何OO语言。 根据软件设计原则(1),场(这里=变量),什么样的方法参数列表中走到一起,让它成为例如方法paratemers重构软件设计
String bikeName;
Wheel wheel1;
Wheel wheel2;
在很多方法一起使用,例如
firstMethod(String bikeName, Wheel wheel1, Wheel wheel2) ...
secondMethod(String bikeName, Wheel wheel1, Wheel wheel2) ...
根据softwaredesign,是较好重构代码为具有类自行车与此字段和方法:
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
}
但在secondMethod的bike.getRearWheel()或进一步rwheel.getSpeed()是称为再次。 为了不叫同样的方法两次(也有软件设计原则),人们可以一个方法改变为
secondMethod(Bike bike, int someSpeed)...
但是,这可能变得非常麻烦,特别是在现实情况下与丢失的变量和违反准则(1)。 你会在实践中选择什么变化?
Hallo,Achim)) 谢谢,但很抱歉,您没有完全理解这个问题。 正如我所说,我知道关于defalut-values方法的源头。 **这里的**点之一是,您可能没有在这里打电话 'secondMethod(自行车自行车,int knownPower)' where已知**在独立**变量(来自自行车), 因为那么,一个用户甚至一个代码创建者))可能(错误地)调用(anyBike,anyValue),并且这会运行错误,因为_value_不是'bike.getRearWheel()。getPower()'相关的。 软件的设计也必须防止这种错误。 –
我只回答了我在这种情况下会做什么的问题。那是被问到的。最终的编程指南只能实现这么多。您无法预测或防止不正确的用法。方法的用户必须确保他/她知道它做了什么。 –