宣告順序重構

2004 年 9 月 1 日

變更宣告順序是否為重構,例如 Java 程式中的方法和欄位?

在現代程式語言中,宣告功能的順序並不會改變程式。如果你在文字檔中交換兩個方法,程式並不在意。因此,反對它是重構的論點是,它不會改變程式的運作方式,因此它不會改變設計,因此它不可能是重構。

在我的 DefinitionOfRefactoring 中,我使用了「使其更容易理解且更便宜地修改」這個詞組。變更宣告可以做到這一點嗎?在某些情況下,我認為可以。將相關功能放在一個類別中是有道理的。你也可以對功能進行排序,以幫助說明類別如何運作 - 這在你撰寫測試案例時特別有價值(儘管在此,在某些 xunit 實作中,順序可能會影響執行)。因此,由於它改善了程式碼的可理解性,我會將重新排序宣告視為重構。

它不會改變內部執行的這個事實是一個紅鯡魚。變更方法名稱不會改變執行,但重新命名是一個非常重要的重構,可以改善程式的可理解性。