局部变量v.s上的Java编码样式。班级成员

问题描述 投票:0回答:1

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

阅读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;
}
java android coding-style
1个回答
0
投票

这只是Java遵循的一种编码样式。在第二种方法中,“成员变量声明”定义了更易读的变量,同时在方法中定义了相同类型的变量(第一种方法),如果开发人员将定义的名称与Set<K> keySet = this.keySet;而不是Set<K> ks = keySet;相同,则在读取代码时会造成混乱。

[包括Android在内的许多社区都遵循相同的风格。 “ m”用作声明成员变量的前缀。因此,如果我重写上面的代码,它将是

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

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

同样,您添加的代码具有Java所遵循的样式。

© www.soinside.com 2019 - 2024. All rights reserved.