gpt4 book ai didi

关于创建新局部变量以引用类成员变量的 Java 编码风格

转载 作者:行者123 更新时间:2023-11-29 04:06:48 25 4
gpt4 key购买 nike

这是一个通用的编码风格问题,关于哪种风格更通用或更优雅。

在阅读Java集合源代码时,我发现第一种风格比第二种风格更频繁。任何人都可以对此有所了解/推理吗?恕我直言,第二种风格比第一种更简洁,但实际上,第一种风格应该以某种方式更优雅地挽回,我无法争辩。

  1. 创建局部变量。
private Set<K> keySet;

public Set<K> keySet() {
Set<K> ks = keySet;
if (ks == null) {
ks = new KeySet();
keySet = ks;
}
return ks;
}

  1. 对类成员变量进行操作。
public Set<K> keySet() {
if (keySet == null) {
keySet = new KeySet();
}
return keySet;
}

最佳答案

这是对 micro-optimizing 的尝试延迟初始化。

由于集合类的使用频率很高,包括在需要高吞吐量的情况下,目标是尽可能节省时间。


此处尝试的优化是降低getfield操作的数量。

由于集合只初始化一次,我们担心初始化后的性能。

第一个代码块通过确保对 null 的检查是本地的来避免 getfield集合初始化后,第一个代码块将总是导致一个getfield调用,而第二个代码块将总是 导致两次 getfield 调用。

关于关于创建新局部变量以引用类成员变量的 Java 编码风格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58091111/

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