2011-09-14 46 views
14

我經常依靠JDK源代碼來了解我應該如何實現一個接口,而且我經常會發現一些非常奇怪的縮進樣式。例如,在DefaultCellEditor.java爲什麼Java庫源代碼如此奇怪地縮進?

public DefaultCellEditor(final JTextField textField) { 
    editorComponent = textField; 
this.clickCountToStart = 2; 
    delegate = new EditorDelegate() { 
     public void setValue(Object value) { 
    textField.setText((value != null) ? value.toString() : ""); 
     } 

    public Object getCellEditorValue() { 
    return textField.getText(); 
    } 
    }; 
textField.addActionListener(delegate); 
} 

我想知道如果這是由於我的IDE或沒有,因爲我覺得這樣的壓痕很奇怪和難以閱讀的。

+2

你在用什麼IDE? –

+0

這是源代碼還是從IDE反編譯? –

+0

@david Netbeans 6.9.1,結果與7.0.1相同。我可能會調查覈心軟件包是否也看起來一樣。 –

回答

3

如果縮進在不同的方法中是一致的,那麼可能存在一些(未寫)的原因。 (a)編碼者不關心縮進,或(b)編碼者確實在意,並且在你的計算機途中發生了一些事情。可能的罪魁禍首是對標籤和空格用於構造代碼的方式沒有給予足夠的重視,而且您的IDE的標籤縮進設置與最後一個觸摸代碼的人的縮進設置不同。

如果您可以在文本編輯器中顯示空白字符,那麼應該顯示是否使用了混合的製表符和空格。

+1

太糟糕了,我不能接受大家的答案。錯誤確實來自源代碼中的不一致性:一些行用製表符縮進,其他一些用空格縮進。強制使用8個空格呈現製表符解決了問題,但是這導致了另一個問題:爲什麼它們混合了製表符和空格?不同的編碼風格的提交者可能......他們應該注意這一點。 –

+0

沒錯。將選項卡轉換爲空格可以在IDE中完成。在我的每次按下TAB鍵時,都會插入四個空格。標籤永遠不會輸入我的代碼。 – John

3

我懷疑你的IDE忽略或以其他方式誤解了製表符。

+4

然後問題轉移到「他們爲什麼混合標籤和空格」。 – delnan

+0

當我評論這個問題時,delnan的確是這樣:標籤似乎與空間混合在一起,爲了所有人的幸福:) –

+0

不,IDE是正確的。縮進真的是這樣。 –

1

作者一方面有一種可能性是IDE /編輯器問題。

回到我的PHP日子裏,我使用了PSPad編輯器,它做了一些非常類似於此的工作 - 在PSPad中,縮進看起來不錯,但是在其他瀏覽器/編輯器中,縮進被損壞。 AFAIK它與混合空間與製表符和不同的標籤寬度有關。

2

似乎格式的NetBeans Java源代碼(src.jar)的代碼。我手動提取罐子,然後用純文本編輯器打開javax/swing/DefaultCellEditor.java,縮進真的很糟糕。所以,它是而不是的IDE。

但爲什麼縮進是不好的;對不起,我不知道。

+0

是的,好的舊文本編輯器可能使用4個空格作爲製表符,而不是8 :) –