2012-07-18 99 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(); 

在第一種情況下,變量是具有相同價值觀的不同對象,但是在第二種情況下,他們是同一個變量。多變量賦值是有風險的,所以我認爲它是不好的做法。這仍然是一個品味問題。