gpt4 book ai didi

java - 最佳实践 : instance variables filling over time

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:25:08 24 4
gpt4 key购买 nike

我是面向对象编程(在 java 中)概念的新手,我经常遇到以下设计问题:

我经常创建带有在初始化时未知的实例变量的类。这些变量会随着时间的推移而填充。这不是一个真正的问题,因为这些变量在被填充之前都是空的,因此我的问题更多是关于这种情况下的最佳实践。

我举个例子。我有一个类 Car。每辆 Car 都有一个 colorvMaxweighthorsepower 等。

当初始化 Car 时,只有它的 colorweighthorsepower 是已知的。 --> 汽车(颜色、重量、马力)

现在可以计算vMax(比方说:weight/horsepower)。令我困惑的是,初始化后 Car 是“不完整的”,这意味着 vMax 只会随着时间的推移而被填充。

我发现这很丑陋,当然汽车的例子也被简化了。我经常有包含 10 多个属性的类,其中一些属性是随时间计算的,这些属性在代码的后面用于计算该对象的更多属性。然后就很难知道哪些变量在某个点已经被填充,哪些没有。

我只是想知道这是否“正常”以及 OOP 的工作方式,或者是否应该避免这种情况。如果是,我很乐意提供一些设计提示。

迈克尔

最佳答案

正如您定义的那样,vMax 应该是一个方法,而不是类的一个属性:

class Car {
private String color;
private double weight;
private double horsePower;

// constructor for Car
public Car (String color, double weight, double horsePower) {
this.color = color;
this.weight= weight;
this.horsePower= horsePower;
}

// usually I would create this as one-line-method... but to clarify:
public double getVMax() {
double vMax = weight / horsePower; // calculate vMax!!!
return vMax;
}
}

关于java - 最佳实践 : instance variables filling over time,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29745108/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com