我是否应该始终对类字段使用私有访问修饰符?

Ric*_*ell 6 java checkstyle

目前我们在代码库上运行checkstyle,它会标记任何不使用私有访问修饰符的非静态类字段.

这是一个有效的checkstyle规则,还是存在需要非私有字段的情况?例如,我认为在同一个包中创建JUnit测试用例的原因是他们可以使用默认访问修饰符访问字段?

hag*_*age 7

面向对象编程的主要特征之一是信息隐藏/封装.这意味着类只允许通过接口访问成员变量:getter和setter方法.因此,其他类无法访问成员变量并以不需要的方式对其进行修改.因此checkstyle规则有效


Rol*_*Boy 6

Effective Java第13项:最小化类和成员的可访问性.

看一下这个.它提供了很好的想法.


Pet*_*rey 5

恕我直言,它的最大努力使场private和final何地可能.然而,对于单元测试,将它们打包为私有或通过反射访问它们可能是一种实用的选择.(这相当于同一件事)

您也可以采用黑盒测试的方法,这意味着除非您可以通过公共方法确定发生了什么,否则不应对其进行测试.(或者你的测试需要更加人为)