2016-11-17 71 views
0

在練習提取並覆蓋重構時,我經常舉例說明非常熟練的教練和培訓師,其中提取的方法的訪問修飾符從私有變爲受保護。提取並覆蓋重構練習強制使用「受保護」修飾符

protected CollectResultReader loadRecordFromOutFile() { 
    return CollectResultReader.factory("../record.json"); 
} 

在上面的代碼的例子中萃取,IDE中創建與所述目標代碼的私人改性劑的新方法。這是期望的行爲。爲了能夠覆蓋被測試的類,它被重新編輯保護。這是不受歡迎的,因爲這意味着生產代碼失去了可用性並且獲得了不必要的訪問權限。

請注意,我想使用純Java和沒有模擬框架。我將我的單元測試保存在同一個包中的不同路徑中。

我的問題:爲什麼不讓方法包私有(無修飾符)?

見包專用改良劑:Controlling Access to Members of a Class

回答

0

只要你能保持測試類在同一個包,沒有理由讓它protected。私人包裹就夠了。

我一直在項目中工作,在那裏我被迫使他們受到保護。原因在於私有包並不是Java開發人員知道的一個平均值。

+0

謝謝BetaRide,這證實了我的猜測。我想知道爲什麼開發人員總是避免包裝私密,這對我來說毫無意義。 – otembajelle