2012-07-18 98 views
0

采取以下:的Java风格:多变量赋值

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

其中filterFileFilter对象和fnef类型FileNameExtensionFilter的实例变量。

您认为在同一行上为多个变量赋值是否是一种很好的编码习惯?或者是否会更好地写出如下示例中的第6行:

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

我个人比较喜欢后者,尽管我想听听你的想法。

+0

为什么你甚至需要两个引用同一个对象的变量? – 2012-07-18 21:38:43

+0

@Don'fnef'是一个字段,它存储对整个类使用的对象的引用,因为该对象是一个'FileNameExtensionFilter';另一方面,'filter'是我发布的代码剪切方法中的局部变量。 – Konstantin 2012-07-19 08:06:24

回答

3

这是一个很主观的问题。

我觉得这是比较明确的:

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

但任何有经验的开发人员会明白这一点:

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

我宁愿使用单独的线使用类似的FileNameExtensionFilter非不可变对象时,以避免混乱。例如,它不是说是相同的:

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

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

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