您应该在代码中使用相关变量吗?

时间:2016-05-17 19:46:40

标签: oop variables naming-conventions naming

最近我想知道在你的代码中使用彼此相关的变量(例如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编写的,那该怎么办?

1 个答案:

答案 0 :(得分:1)

通过创建具有金额和货币的单独类Balance,您可以使用具有“balance”参数的单个构造函数,并根据需要使用欧元,美元,英镑等。所有转化都转到Balance类,Person可以使用余额,无论货币,转化率等等。