【问题标题】:Java style: Multiple variable assignmentJava风格:多变量赋值
【发布时间】:2012-07-18 00:56:23
【问题描述】:

采取以下措施:

if (filter instanceof FileNameExtensionFilter) {
    fnef = (FileNameExtensionFilter) filter;
    String[] extensions = fnef.getExtensions();
    if (extensions.length > 1) {
        fnef = filter = new FileNameExtensionFilter(fnef.getDescription(), extensions[0]);
    }
}

其中filterFileFilter 对象,fnefFileNameExtensionFilter 类型的实例变量。

您认为为同一行上的多个变量赋值是一种良好的编码习惯吗?或者最好将示例中的第 6 行写成如下:

fnef = new FileNameExtensionFilter(fnef.getDescription(), extensions[0]);
filter = fnef;

我个人更喜欢后者,不过我想听听你的想法。

【问题讨论】:

  • 为什么还需要两个变量引用同一个对象?
  • @Don fnef 是一个字段,它存储对对象的引用以供整个类使用,假设对象是FileNameExtensionFilter;另一方面,filter 是我发布的代码片段所在方法中的局部变量。

标签: java variables syntax coding-style variable-assignment


【解决方案1】:

这是一个相当主观的问题。

我认为这更清楚:

fnef = new FileNameExtensionFilter(fnef.getDescription(), extensions[0]);
filter = fnef;

但是任何有经验的开发者都会明白这一点:

fnef = filter = new FileNameExtensionFilter(fnef.getDescription(), extensions[0]);

【讨论】:

    【解决方案2】:

    在使用像 FileNameExtensionFilter 这样的非不可变对象时,我宁愿使用单独的行来避免混淆。比如不一样的说:

    MyObject var1 = new MyObject();
    MyObject var2 = new MyObject();
    

    MyObject var1, var2;
    var1 = var2 = new MyObject();
    

    在第一种情况下,变量是具有相同值的不同对象,但在第二种情况下,它们是相同的变量。多变量赋值是有风险的,所以我认为这是不好的做法。这仍然是一个品味问题。

    【讨论】:

      猜你喜欢
      • 2020-07-23
      • 2014-03-22
      • 1970-01-01
      • 2015-07-14
      • 2010-12-29
      • 2012-12-01
      • 1970-01-01
      • 2016-05-10
      • 2014-11-27
      相关资源
      最近更新 更多