2014-02-26 30 views
1

我正在使用Eclipse的格式和清理操作清理/格式化超過700個Java文件。我的老闆擔心所有這些清理/格式化可能會導致運行時行爲的變化。Eclipse的Java格式/清除操作可以更改運行時行爲嗎?

據我所知,可能會改變運行時行爲的唯一清理/格式首選項是「清理/代碼組織/成員/排序成員/排序所有成員」,Eclipse會提醒你。

所以我的問題是從上面提到的偏好,所有其他的Eclipse清理和格式首選項安全嗎?或者有沒有人遇到過執行清理/格式改變其程序運行時行爲的情況?

謝謝你的時間。

+0

不要做

public class MyClass { private static int I; private static int J = I + 1; static { I = 2; } } 

:就拿這個例子。不是因爲它可以改變運行時行爲,而是因爲通過重新格式化,你將失去VCS(版本控制系統)變化的歷史。 – ibre5041

+0

我應該提到。我們理解這可能導致的差異/比較操作的問題。然而,我們即將在我們的工作中轉變爲新的VCS,所以我們將不會有失敗的歷史。如果人們想要在兩個VCS之間對文件進行手動比較和比較,但仍然存在這樣的問題,但是代碼處於最後的狀態,我們已準備好接受該命中。謝謝。 – jirish

+0

如果這些更改破壞了任何內容,那是因爲您依賴於無證行爲。 話雖如此......按照我的經驗排序成員更有可能刪除有用的信息(例如,有意義的功能分組),而不是改進代碼。除非你有這樣做的好理由,否則我不會。 Eclipse可以顯示成員的排序列表,而不必實際對代碼進行排序。 – keshlam

回答

1

雖然不太可能改變字段聲明或初始值設定項的順序可能導致運行時發生更改。如果你重新排序的聲明是這樣,J值將最終得到初始化爲3,而不是1

public class MyClass { 
    private static int I; 

    static { 
     I = 2; 
    } 

    private static int J = I + 1; 
} 
+0

嘿馬特。重新排序如何改變行爲的有用例子。除了重新排序import語句之外,我將遠離格式/清除的任何重新編碼。我想知道是否有任何其他格式/清理首選項可能會導致問題。例如刪除未使用的私有/局部變量,在所有if/for/else/while語句中添加大括號,將所有表達式括在括號中,刪除不必要的轉換等。謝謝 – jirish

+0

絕大多數重新排序聲明不會對語義或運行時產生任何影響行爲。例如重新排序方法聲明沒有這樣的副作用。我一般不會擔心這件事,但這是你需要考慮的事情。 –

相關問題