是否对独立swing应用程序中的所有字段使用私有修饰符?

时间:2012-09-27 18:18:07

标签: java swing private access-modifiers

我有一个带有主类的独立Swing应用程序,我将其称为MainClass。对此MainClass的唯一访问来自此类的main(String args [])方法。换句话说,这个类不会被任何其他类使用。

我应该将MainClass的成员字段设为“私有”吗?我认为它是多余的,因为没有其他类会实例化MainClass,但另一个更有经验的程序员认为它违反了Java最佳实践,没有将字段标记为“私有”。

3 个答案:

答案 0 :(得分:2)

一般情况下,您应该只拥有班级private的成员字段,无论您是在班级内部还是外部使用它。(在某些情况下protected如果您希望它们可以访问来自您的base class

你不希望外面的世界直接访问你的领域......否则你将打破Encapsulation的整个概念。

所以说,在你的特殊情况下,你应该将它们作为私人领域..

即使现在不能从外面访问课程,但最好安全一点..

答案 1 :(得分:2)

Java是面向对象的。

如果setter和getter包含较差的逻辑,那么创建私有字段并不总是有意义。

的确,许多开发人员认为创建getter和setter并编写私有字段IS encapsulation =>错!

为什么封装数据很重要,特别是如何? 面向对象编程与程序编程有何不同?

你可以阅读这篇文章来得到一些答案:http://pragprog.com/articles/tell-dont-ask
然后这个:http://en.wikipedia.org/wiki/Law_of_Demeter
以及一个具体的例子:http://www.devdaily.com/java/java-law-of-demeter-java-examples

因此,据我所知,大约99%的案例,字段必须是私有/或包或受保护(但从不公开,除非框架强加它......很少)并且只能通过包装类方法来操纵。 在大多数情况下,令人惊讶的是,95%的吸气剂/固定剂因无用而被移除。

这是一种完全不同的思维方式,很难停止思考程序,但它会让你的代码更灵活,更干净,更接近现实世界;)

你说:

  

我认为这是多余的,因为没有其他课程   实例化MainClass

我认为,优秀设计的关键是限制性最强,只要它允许创建功能。如果开发人员过于宽容,程序可能会导致严重的奇怪冲突,从而导致行为。

开发人员必须尝试预测未来几年的程序(对于大型程序),并注意未来的开发人员可能会在您的上下文中出现一些错误:在main方法之外实例化您的类。

答案 2 :(得分:1)

Controlling Access to Members of a Class中所述, no modifier 表示 package-private 访问权限,允许查看同一个包中的其他类。如果您不想这样,请明确地将成员私有