何时使用字段变量?

在什么情况下你会使用字段变量而不是局部变量? 我发现在类中的2个或更多方法中使用变量时有点困难。 我倾向于使用局部变量并将它们传递给另一个方法。

谢谢,

莎拉

在面向对象的术语中,变量是否有意义作为对象的属性? 如果是这样,你应该把它变成一个字段变量。 如果没有,它可以采取任何一种方式。

记住单一责任原则 – 精心设计的类应该只有1个责任,因此只有1个改变的理由。

字段表示与您的类的实例相关的某种状态。 例如, BankAccount可以有一个balance字段。

您永远不应该使用字段来简化从一个方法到另一个方法的数据传递。 这根本不是它的目的。 这样做也会使您的方法本质上不安全或需要同步。

局部变量只是用于支持方法操作的临时数据存储。 例如,

 public void addInterest(double rate) { double toAdd = rate * balance; logTransaction("Interest", toAdd); balance += toAdd; } 

toAdd here作为一个字段是没有意义的,因为它是临时的操作,而不是帐户状态的一部分。

除非有一个非常具体的原因,否则我肯定不会将变量传递给其他方法。 如果在类中多次使用该变量,请将其设为字段变量。 这几乎总能使您的代码更加灵活。

通常,您也可以考虑变量是否有意义作为类的一部分。 也就是说,让Car类具有变量numOfMiles ,即使它只使用了几次。 但是,如果一个方法是int GetAmountOfGasUsed(int milesThisTrip) ,则将里程变量作为局部变量传递是有意义的,因为您行进的距离可能不是汽车特有的。

如果使用变量的方法也需要修改值,那么一定要使它成为一个字段变量。 但是,如果他们只读取该值,您可以安全地传递它。