Java getter/setter 风格问题

标签 java coding-style

我有一个关于 Java 风格的问题。我从事 Java 编程多年,但主要是为了我自己的目的,我不必太担心风格,但我只是没有找到一份必须专业使用它的工作。我问是因为我即将让人们第一次真正检查我的代码,我想看起来我知道我在做什么。呵呵。

我正在开发一个库,其他人将在我的工作中使用它。其他代码使用我的库的方式本质上是实例化主类,并可能调用其中的一两个方法。他们不必使用我的任何数据结构,或我在后台使用的任何类来完成工作。我可能是维护这个库的主要人员,但其他人可能会每隔一段时间查看一次代码。

因此,当我编写这个库时,我只是对我的大部分字段使用了默认的无修饰符访问级别,甚至让其他类偶尔直接读取和可能直接写入这些字段。因为这是在我的包中,所以这似乎是一种行之有效的方法,因为这些字段在包外是不可见的,而且似乎没有必要将事情设为私有(private)并提供 getter 和 setter。除了我,没有人会在我的包中编写代码,这是封闭源代码,等等。

我的问题是:对于其他 Java 程序员来说,这会不会是糟糕的风格?我是否应该提供 getter 和 setter,即使我确切地知道将获取和设置我的字段的内容并且我不担心其他人编写的东西会破坏我的代码?

最佳答案

即使在您的闭源包中,封装也是一个好主意。

想象一下,你的包中的一堆类正在访问一个特定的属性,你意识到你需要缓存那个属性,或者记录对它的所有访问,或者从一个实际存储的值切换到一个你想要的值即时生成。您必须更改许多实际上不应该更改的类。您将一个类的内部工作原理暴露给其他不需要了解这些内部工作原理的类。

关于Java getter/setter 风格问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2224698/

相关文章:

java - 它的用途 <sf :errors path ="" cssClass ="error"> in jsp?

java - 在尝试实现 getSystemService() onCreate() 之前,系统服务对 Activity 不可用

java - 构造函数 vs 方法 vs 工厂

c++标准实践: virtual interface classes vs.模板

python - 在具有多个缩进的 Python 中保持 79 个字符的行限制

java - ChartRenderingInfo 对于图表区域返回 0

java - Salesforce OAuth Access_Token 为空?

coding-style - 应该如何注释 if-else 结构?

coding-style - 返回计算结果和状态。最佳实践

coding-style - 如何命名仅在条件为真时才执行某些操作的函数