Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 我是否应该始终对类字段使用私有访问修饰符?_Java_Checkstyle - Fatal编程技术网

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

Java 我是否应该始终对类字段使用私有访问修饰符?,java,checkstyle,Java,Checkstyle,目前我们正在代码库上运行,它会标记任何不使用private访问修饰符的非静态类字段 这是一个有效的checkstyle规则,还是在某些情况下需要使用非私有字段?例如,我认为在同一个包中创建JUnit测试用例的原因是,它们可以使用有效的Java2nd:最小化类和成员的可访问性的默认访问修饰符访问字段 看看这个。面向对象编程的一个主要特点是信息隐藏/封装。这意味着类只允许通过接口访问成员变量:getter和setter方法。因此,其他类无法访问成员变量并以不需要的方式修改它们。因此,checksty

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

这是一个有效的checkstyle规则,还是在某些情况下需要使用非私有字段?例如,我认为在同一个包中创建JUnit测试用例的原因是,它们可以使用有效的Java2nd:最小化类和成员的可访问性的默认访问修饰符访问字段


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

IMHO尽可能使字段
私有
最终
。然而,对于单元测试来说,将它们打包为私有的或通过反射访问它们可能是一种务实的选择。(相当于同一件事)


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

我认为这是一个很好的有效规则,可以确保信息隐藏正确进行,这是OOP的一个重要方面


如果对象可以控制对其状态的更改,则使用公共getter和setter方法。

一般来说,使用私有字段是有意义的,但该规则也有例外。一个可能的例外是,当您处理数据传输对象(DTO)时,您希望与客户机明确沟通,即设置属性值不会在后端产生更改。公共字段是一种很好的沟通方式。

私有访问或最终性对于像JMockit这样的高级模拟框架来说不是问题。然而,getter/setter在android的onder版本上可能会有一些性能不佳

我不知道什么是非静态类字段吗?您是指非私有成员变量吗?+0:使用公共getter可能会比包私有字段更广泛地公开字段。我不认为这是一个进步。幸运的是,在这种情况下,我没有使用Android。谢谢,这篇文章现在已经在帖子中了,但它并没有立即回答我的问题。我应该为所有事情使用一个界面吗?甚至是bean?我所说的接口不是指Java
接口,而是指类提供给外部访问其成员的方法。