您应该在代码中使用相关变量吗?
Should you use related variables in your code?
最近我想知道在代码中使用彼此相关的变量(例如 a = 2 * b)是否是一种不好的做法。一个具体的例子是欧元和美元。假设我们有一个人 class,他有一些欧元和美元余额(编码为 java 以供演示):
class Person {
float balanceInEuros;
float balanceInDollars;
public Person(...) { // Problem 1 (see down below)
}
}
问题 1:您需要在构造函数参数中放入什么?这两个变量都是 float
所以我们无法区分不同的构造函数(java 可以有多个构造函数用于 class,只要它们有不同类型的参数)。为了解决这个问题,我们可以为 return 一个 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)
或类似的内容。
的参数
- 使用美元和欧元感觉比使用没有具体含义的所谓 'balance' 更自然。
- 它更有意义,从而增强了代码的可读性
反对意见
- 通过使用具有计算 euros/dollars 等函数的通用 'balance',它会产生更清晰的代码(更少 functions/bulk 代码...)
- 你需要更多的内存来存储本质上相同的东西,这可能很糟糕
什么更好,为什么?
编辑:我关心的另一件事是我用 OO 语言编写了这个特定示例。例如,如果这是用 java 脚本编写的怎么办?
通过创建一个具有金额和货币的单独 class Balance
,您可以使用带有 'balance' 参数的单个构造函数并使用欧元、美元、英镑等随心所欲。所有转换都转到 Balance
class 并且 Person
可以使用余额而不考虑货币、转换率等。
最近我想知道在代码中使用彼此相关的变量(例如 a = 2 * b)是否是一种不好的做法。一个具体的例子是欧元和美元。假设我们有一个人 class,他有一些欧元和美元余额(编码为 java 以供演示):
class Person {
float balanceInEuros;
float balanceInDollars;
public Person(...) { // Problem 1 (see down below)
}
}
问题 1:您需要在构造函数参数中放入什么?这两个变量都是 float
所以我们无法区分不同的构造函数(java 可以有多个构造函数用于 class,只要它们有不同类型的参数)。为了解决这个问题,我们可以为 return 一个 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)
或类似的内容。
的参数
- 使用美元和欧元感觉比使用没有具体含义的所谓 'balance' 更自然。
- 它更有意义,从而增强了代码的可读性
反对意见
- 通过使用具有计算 euros/dollars 等函数的通用 'balance',它会产生更清晰的代码(更少 functions/bulk 代码...)
- 你需要更多的内存来存储本质上相同的东西,这可能很糟糕
什么更好,为什么?
编辑:我关心的另一件事是我用 OO 语言编写了这个特定示例。例如,如果这是用 java 脚本编写的怎么办?
通过创建一个具有金额和货币的单独 class Balance
,您可以使用带有 'balance' 参数的单个构造函数并使用欧元、美元、英镑等随心所欲。所有转换都转到 Balance
class 并且 Person
可以使用余额而不考虑货币、转换率等。