最近我想知道在你的代码中使用彼此相关的变量(例如a = 2 * b)是不是一种坏习惯。一个具体的例子是欧元和美元。假设我们有一个Person类,它在欧元和美元方面有一些平衡(用java编写,用于演示):
class Person {
float balanceInEuros;
float balanceInDollars;
public Person(...) { // Problem 1 (see down below)
}
}
问题1:你需要在构造函数参数中添加什么?这两个变量都是float
所以我们无法区分不同的构造函数(java可以为一个类提供多个构造函数,只要它们具有不同类型的参数)。为了解决这个问题,我们可以使用两个单独的方法来返回Person,例如:
public static createPersonWithEuros(float euros) {
Person person = new Person();
person.setEuros(euros);
return person;
}
// Similar for dollars...
问题2:现在我们没有美元的价值,因此方法person.getDollars()
会导致错误。当然,可以通过在createPersonWithEuros()
方法中添加一行来再次修复此问题:person.setDollars(Person.EXCHANGE_RATE_EURO_DOLLAR * euros)
或其他内容。
有什么更好,为什么?
编辑:我关心的另一件事是我用OO语言编写了这个特定的例子。如果这是用javascript编写的,那该怎么办?
答案 0 :(得分:1)
通过创建具有金额和货币的单独类Balance
,您可以使用具有“balance”参数的单个构造函数,并根据需要使用欧元,美元,英镑等。所有转化都转到Balance
类,Person
可以使用余额,无论货币,转化率等等。