2016-11-17 36 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