0

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

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

在上面的示例中,代码被提取出来,IDE 在目标代码中创建了一个带有私有修饰符的新方法。这是期望的行为。为了能够覆盖被测类,它被重新编辑为受保护。这是不希望的,因为这意味着生产代码失去了可读性并获得了不必要的访问权限。

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

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

请参阅中的包私有修饰符:控制对类成员的访问

4

1 回答 1

0

只要您可以将测试类保留在同一个包中,就没有理由制作它protected。包私有就足够了。

我一直在从事项目工作,我被迫让它们受到保护。原因是包私有不是一个普通的java开发人员知道的。

于 2016-11-17T12:12:01.213 回答