gpt4 book ai didi

java - 在这种情况下使用重载是否错误?

转载 作者:太空宇宙 更新时间:2023-11-04 14:07:21 25 4
gpt4 key购买 nike

我有一种方法可以列出 ArrayList 的元素,通常它会打印全局变量 ArrayList 的组件,但在一个特定实例中我需要它来打印局部变量的组件。

所以我有这个

public static void listPlayers(ArrayList<Player> characters, boolean beingRolled) {
//print character components (beingRolled specifies which parts of each players to print
}

当我使用局部变量 ArrayList 时,我会使用它,当我想使用全局时我称之为这个版本

public static void listPlayers(boolean beingRolled) {
listPlayers(players, abitraryBoolean);
}

其中players是全局变量

我正在考虑的另一件事是,在我想使用全局的任何地方,我都可以传递字符的空引用并编写此方法

public static void listPlayers(ArrayList<Player> characters, boolean beingRolled) {
if (characters == null) characters = players;
//print components
}

哪个版本更专业/推荐?

最佳答案

一般情况下,远离null;重载方法签名是一种更好的方法。

也就是说,你说的一件事很可怕——你有一个对全局变量进行操作的静态方法。一般来说,这是一个坏主意。您应该考虑重构以使用对象/类作用域状态,而不是全局、静态作用域状态。

我什至会说,您应该只使用以 ArrayList 作为参数的重载,并每次都将全局变量传递给它。这样,即使您必须使用全局变量,至少您可以在少一处使用它。

编辑:我大学时的一位教授写了一本关于重构的书,该书非常可读,并且有很多很好的内容(尽管排版有点奇怪)。这就是《基于原则的重构:通过应用重构规则学习软件设计原则》,作者:Steve Halladay。我强烈建议阅读前半部分(后半部分本质上是引用)。

关于java - 在这种情况下使用重载是否错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28711314/

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