java - 在 Java 中,使对象的成员公开可用是不是一个坏主意?

标签 java field private encapsulation public

我的应用程序中有一个数据类。我的应用程序永远不会被用作公共(public) API,我将是我项目中唯一开发代码的人。

我正在尽我所能节省每一盎司的处理器和内存资源。

让我的数据类中的数据成员具有公共(public)/ protected /默认保护以便我不必使用 getter 是不是一个坏主意?使用 setter/getter 需要稍微多一点的内存和创建堆栈等等……我认为这是没有必要的。我认为使用 getter 的唯一原因是为了保护/隐私,但如果我是唯一的编码员并且没有其他人会使用我的 API,那么不使用 getter 是个坏主意吗?

请告诉我这是否愚蠢。

最佳答案

如果您要替换 getter/setter 来优化性能/内存,那么您采用了错误的方法。这些几乎肯定不会成为您的应用程序运行缓慢或使用过多内存的原因。

优化的主要错误是在你知道你需要之前就去做。只有当你有真实的信息显示你在哪里浪费了最多的时间/内存时才进行优化,然后花时间优化它。这背后的想法是,通过在一段占总运行时间 80% 的代码中削减 5% 的时间,比在一段仅贡献 5% 的代码中削减 20% 的时间,你将获得更多 yield 。总运行时间。 (同样适用于内存)。

此外,我会按照您的建议谨慎设计应用程序,因为这意味着某些属性(例如:简单属性)可以直接访问,而其他属性(更复杂的派生属性,或您不需要的属性)暴露底层类型)将有 getters/setters。因此,您最终会混合使用多种访问方式,这将难以维护。

关于java - 在 Java 中,使对象的成员公开可用是不是一个坏主意?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/554767/

相关文章:

mysql - 字段 "subject_name"没有默认值

c++ - c++中友元声明的内容错误基础

drupal - 使内容仅对 Drupal 中的作者可见

c++ - 封装数据,使 setter 是私有(private)的,而 getter 是公共(public)的

java - 尝试编写Java程序来播放mp3文件

java - 计算给定字母在Java中出现的句子

mysql - 按照 mysql 中的模式更新多行

java - Twitter API 更新限制错误 403

java - 用单元格内容替换字符串单元格引用

templates - 如何更新特定 Sitecore 模板的多个现有项目的字段值?