2016-12-16 62 views
4

代碼:Java:如果只有一個類將使用新類,那麼是否有用於重構/解耦?

public class Name { 

private String[] name; 
private String first; 
private String middle; 
private String last; 
private String suffix; 


public Name (String fullName) { 
    //Name is parsed in constructor 
    parse1(); 
    parse2(); 
    parse3(); 
    //invoking more parse methods... 
} 

private void parse1() {} 
private void parse2() {} 
private void parse3() {} 
//more parse methods... 

構造下面這些方法幫助解析fullName。我想將這些parse#()方法到另一個類,說NameHelper.class,使一切有public static但裏面我的東西說,這是沒用的重構一樣,因爲沒有其他類,但是Name將使用它。

我想重構,因爲後來,這將是非常困難的單元測試。但我不希望犧牲測試輕鬆與糟糕的代碼重構,因爲我總是可以使用PowerMockito測試士兵。

回答

2

一兩件事,總是幫助正在考慮責任。名字首先是一個名字。

解析字符串爲我創建一個名字看起來像一個責任,不一定屬於那個名字。它實際上更多的是關聯的「幫手」或者「服務」功能。

在這個意義上,剛剛創建的包保護的額外類別,並在那裏移動解析代碼。

但是爲了記錄:我會而不是使事情變得私人化,然後轉向Powermock錘以便使其測試。特別是真正如此輸入/輸出的代碼;爲什麼你需要首先嘲笑?

我的意思是:這聽起來像你已經ingoing 字符串,並因此,你收到一些名稱的對象。因此:你的單元測試有一些測試輸入數據,實例化NameParserService;然後檢查輸出是否正確。無需任何形式的嘲弄/殘留!

1

如果你覺得讓你的代碼更好,重構。我沒有理由不把他們放在另一個班級。它也可能使其更具可讀性。如果你不想去實例變量,那麼就沒有必要把這些方法放在那裏。您可能希望使它們受到保護,並將它們放入相同的包或默認(數據包專用)訪問中。

相關問題