提取并覆盖重构实践强制“受保护”修饰符

时间:2016-11-17 12:04:10

标签: java tdd override extract modifiers

在练习提取和覆盖重构时,我经常使用非常熟练的教练和培训师的示例,其中提取的方法的访问修饰符从私有更改为受保护。

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

在上面的示例中,代码被解压缩,IDE在目标代码中创建了一个带有私有修饰符的新方法。这是理想的行为。为了能够覆盖被测试的类,它被重新编辑为受保护。这是不受欢迎的,因为这意味着生产代码失去了可重用性并获得了不必要的访问权。

请注意,我想使用纯Java而不使用模拟框架。我将单元测试保存在同一个包中的不同路径中。

我的问题:为什么不让方法包私有(没有修饰符)?

请参阅:Controlling Access to Members of a Class

中的包私有修饰符

1 个答案:

答案 0 :(得分:0)

只要您将测试类保持在同一个包中,就没有理由将其设为protected。包私密就足够了。

我一直在项目中工作,我被迫让他们受到保护。原因是包私有不是java开发人员所知道的。