存储与。生成字符串
Storing Vs. Generating Strings
作为 Whosebug 的忠实用户多年后,我终于决定写下我自己的问题,所以如果我遗漏了什么,我深表歉意。
我尝试搜索这个主题,但不太确定如何措辞。
我正在 Java 编程,并且正在为 Minecraft 服务器编写插件。我想让这个插件响应用户输入,所以我向玩家发送各种各样的消息,包括成功消息、帮助消息、错误消息等。可以通过一个简单的方法向玩家发送消息玩家对象:player.sendMessage(String message);
但是,我不想简单地使用那种方法在每个实例中直接发送消息,而是我更愿意将所有消息存储在一个位置,以使代码更易于管理如果出现拼写错误或决定更改文本。
我目前的实现是一个名为 Messenger 的 class。对于可以发送给玩家的每条消息,它包含一个 public void 方法,该方法接受玩家作为参数,以及与消息相关的特定信息,以便突出显示并包含在消息中.
一个假设的例子是这样的:
public void playerPosition(Player player, int x, int y, int z) {
player.sendMessage("Your coordinates are: "+x+", "+y+", "+z+".");
}
但是,我对 Java 还是个新手,我正在尽最大努力实施最佳实践和高效设计。我知道有更好的方法来处理这种情况并保持高水平的可读性和可维护性。
这些方法将是静态的,因为我读到静态方法占用的内存较小,但其中一些方法会引用 Messenger class 中的非静态变量,以传达来自其他方法的一些动态信息播放器的来源。
我将重新设计,以便将所有需要的信息直接传递给方法,这样它们就可以是静态的。
但是,我想知道:每次调用方法时生成消息的结果是否更有效,还是我应该将消息的内容存储在一个字符串中并简单地 return细绳?方法的编译代码是否比 returning 存储的字符串更快更高效?
如果 return 存储字符串的速度更快,我可以简单地存储带有参数占位符的字符串,供 String.format();
稍后使用
我希望这对于我的最终问题来说不会太冗长,但我希望我也可以在我的方法方面被引导走上编程正义的道路。也就是说,如果您看到我应该做的不同的事情,或者我可能遇到的根本误解的迹象,请告诉我!你们都很棒,谢谢!
我想你问的是每次调用 playerPosition 时构建字符串(如你的示例)更快还是每次 x
、y
或 z
被更新,并且 return 每次 playerPosition
被调用。
这取决于哪个操作发生得更频繁。您希望字符串构建的发生频率最低。
如果更新坐标比获取位置更频繁,则在 playerPosition
中构建字符串。如果您查询玩家位置的频率高于更新它的频率,则在 updateCoordinates
中构建字符串(或您拥有的任何等效方法)。
例如,如果这是一款带有图形的 2D 平台游戏,您将不断查询玩家位置,而位置只会在按键时更新;因此,您希望在 updateCoordinates
方法中构建字符串。
作为 Whosebug 的忠实用户多年后,我终于决定写下我自己的问题,所以如果我遗漏了什么,我深表歉意。
我尝试搜索这个主题,但不太确定如何措辞。
我正在 Java 编程,并且正在为 Minecraft 服务器编写插件。我想让这个插件响应用户输入,所以我向玩家发送各种各样的消息,包括成功消息、帮助消息、错误消息等。可以通过一个简单的方法向玩家发送消息玩家对象:player.sendMessage(String message);
但是,我不想简单地使用那种方法在每个实例中直接发送消息,而是我更愿意将所有消息存储在一个位置,以使代码更易于管理如果出现拼写错误或决定更改文本。
我目前的实现是一个名为 Messenger 的 class。对于可以发送给玩家的每条消息,它包含一个 public void 方法,该方法接受玩家作为参数,以及与消息相关的特定信息,以便突出显示并包含在消息中.
一个假设的例子是这样的:
public void playerPosition(Player player, int x, int y, int z) {
player.sendMessage("Your coordinates are: "+x+", "+y+", "+z+".");
}
但是,我对 Java 还是个新手,我正在尽最大努力实施最佳实践和高效设计。我知道有更好的方法来处理这种情况并保持高水平的可读性和可维护性。
这些方法将是静态的,因为我读到静态方法占用的内存较小,但其中一些方法会引用 Messenger class 中的非静态变量,以传达来自其他方法的一些动态信息播放器的来源。
我将重新设计,以便将所有需要的信息直接传递给方法,这样它们就可以是静态的。
但是,我想知道:每次调用方法时生成消息的结果是否更有效,还是我应该将消息的内容存储在一个字符串中并简单地 return细绳?方法的编译代码是否比 returning 存储的字符串更快更高效?
如果 return 存储字符串的速度更快,我可以简单地存储带有参数占位符的字符串,供 String.format();
稍后使用我希望这对于我的最终问题来说不会太冗长,但我希望我也可以在我的方法方面被引导走上编程正义的道路。也就是说,如果您看到我应该做的不同的事情,或者我可能遇到的根本误解的迹象,请告诉我!你们都很棒,谢谢!
我想你问的是每次调用 playerPosition 时构建字符串(如你的示例)更快还是每次 x
、y
或 z
被更新,并且 return 每次 playerPosition
被调用。
这取决于哪个操作发生得更频繁。您希望字符串构建的发生频率最低。
如果更新坐标比获取位置更频繁,则在 playerPosition
中构建字符串。如果您查询玩家位置的频率高于更新它的频率,则在 updateCoordinates
中构建字符串(或您拥有的任何等效方法)。
例如,如果这是一款带有图形的 2D 平台游戏,您将不断查询玩家位置,而位置只会在按键时更新;因此,您希望在 updateCoordinates
方法中构建字符串。