在 Java 中,公开对象的成员是否是一个坏主意?

2023-11-21

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

我正在努力节省每一盎司的处理器和内存电量。

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

如果这很愚蠢,请告诉我。


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

优化的主要错误是在您知道需要之前就进行优化。仅当您有真实信息显示浪费最多时间/内存的地方时才进行优化,然后花时间对其进行优化。这背后的想法是,在占总运行时间 80% 的代码中减少 5% 的时间,比在只占总运行时间 5% 的代码中减少 20% 的时间要多得多。总运行时间。 (同样适用于内存)。

另外,我会按照您的建议谨慎设计应用程序,因为这意味着某些属性(例如:简单属性)将可以直接访问,而其他属性(更复杂的派生属性,或您不想公开的属性)底层类型)将有 getter/setter。因此,您最终会得到混合的访问样式,这将更难以维护。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Java 中,公开对象的成员是否是一个坏主意? 的相关文章

随机推荐

  • 将参数传递给 angularjs 过滤器

    是否可以将参数传递给过滤器函数 以便可以按任何名称进行过滤 就像是 scope weDontLike function item name console log arguments return item name name 实际上还有另
  • 使用 Ajax 和 jQuery 检查文件是否存在 - 始终返回 200 响应

    所以我需要在向客户端显示特定数据之前检查文件是否存在 使用 jQuery 我有这个 当我尝试运行该函数时 其中 example com 是我的域名 我总是收到 200 响应代码 我想知道
  • Django、Virtualenv、nginx + uwsgi导入模块wsgi报错

    我尝试使用 nginx virtualenv 和 uwsgi 在临时服务器上设置我的 django 项目 但我不断收到导入模块 wsgi 错误 如果有一个社区我可以在这里找到答案 提前谢谢大家 这是我的配置文件 我的 django 项目上的
  • 如何在SSIS包中参数化数据库连接字符串?

    我有一个在 Business Intelligence Development Studio 中构建的 SSIS 包 其中指定了源数据库和目标数据库 现在我想使用一些变量来参数化数据库连接并在命令行中运行包 我尝试用变量 User Sour
  • 模拟和网络凭据

    我需要通过一个NetworkCredential对象 其中包含当前模拟的用户从 ASP NET 应用程序访问 Web 服务的凭据 我的代码如下所示 WindowsIdentity windowsIdentity HttpContext Cu
  • Git - 暂时保存当前工作

    我正在 master 分支上添加一个功能 更改几个文件后 我意识到我需要在没有更改的情况下检查输出 我能想到的办法是 提交当前更改 签出并切换到新分支 在新分支中 git reset hard HEAD 这样我就可以回到原来的代码了 尝试代
  • 以步进增量滚动水平 UIScrollView?

    我有一个可以水平滚动的 UIScrollView 可滚动的内容按列显示 有没有办法使滚动仅以步进增量而不是像素移动 即一次移动一列 Diagram 是的 有 yourScrollView pagingEnabled YES 检查UI滚动视图
  • Python3 以网络摄像头 fps 处理并显示网络摄像头流

    如何读取相机并以相机帧速率显示图像 我想连续从网络摄像头读取图像 进行一些快速预处理 然后在窗口中显示图像 这应该以我的网络摄像头提供的帧速率 29 fps 运行 OpenCV GUI 和 Tkinter GUI 似乎太慢 无法以这样的帧速
  • MVC 使用 Html.CheckBoxFor 和 nullable Bool

    我有一个复选框 我想在与称为公共的字段相关的视图上显示该复选框 该复选框基本上说明特定行是否是公共的 在数据库中 这是一个位字段 但由于表以前的工作方式 它允许为空 我正在使用 Html CheckBoxFor 但它抱怨这个字段 因为在系统
  • 如何查找 int 数组中元素的索引?

    如何在 Java 类型数组中找到某个值的索引int 我尝试使用Arrays binarySearch在我的未排序数组中 它有时只给出正确的答案 Integer array 1 2 3 4 5 6 Arrays asList array in
  • std::fstream 缓冲与手动缓冲(为什么手动缓冲有 10 倍增益)?

    我测试了两种写入配置 Fstream缓冲 Initialization const unsigned int length 8192 char buffer length std ofstream stream stream rdbuf g
  • 使用 php 以人类可读的格式从数据库表中打印餐厅营业时间

    我有一张表格 上面列出了餐馆的营业时间 这些列是 id eateries id day of week start time 和 end time 每个餐馆在表中都会出现多次 因为每天都有一个单独的条目 有关更多详细信息 请参阅上一个问题
  • Math.random() 什么时候开始重复?

    我在 nodejs 中进行了这个简单的测试 我让它运行了一整夜 并且无法让 Math random 重复 我意识到这些值 甚至整个序列 迟早会重复 但是对于何时发生有合理的预期吗 let v for let i 0 i let r Math
  • .net PDF 查看器控件[关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心以获得指导 我们正在寻找适用于 WPF
  • 如何将 spring bean 注入(custructor)到 Mapstruct 的抽象映射器中?

    我有下面的映射器类 我想在其中使用CounterService 我正在尝试构造函数注入 但这不起作用并且null正在打印 Mapper componentModel spring uses CounterService class inje
  • 接口中的条件必需属性

    我想输入一个可以包含任何属性的对象 但如果它具有任何属性a b or c 它必须包含所有属性a b and c 换句话说 对象可以包含任何属性 但如果它包含a b or c它必须包含a b and c let something Somet
  • 如何修复 ValueError:不支持多类格式[重复]

    这个问题在这里已经有答案了 这是我的代码 我尝试计算 ROC 分数 但我遇到 ValueError 问题 不支持多类格式 我已经在寻找 sci kit learn 但它没有帮助 最后 我仍然有 ValueError 不支持多类格式 这是我的
  • OnTouchListener 和 OnClickListener 的区别

    我制作了一个应用程序 它实现了View OnTouchListener 但是当我将其上传到 Android Market Google Play 商店 时 我收到以下消息 此 apk 请求 1 个将用于 Android Market 的功能
  • 代码分割“import”破坏了 Jest 测试

    我正在使用 webpack 的代码分割功能 但 jest 似乎无法识别import 功能 import myModule then function myModule SyntaxError Unexpected token import
  • 在 Java 中,公开对象的成员是否是一个坏主意?

    我的应用程序中有一个数据类 我的应用程序永远不会用作公共 API 并且我将是我的项目中唯一开发代码的人 我正在努力节省每一盎司的处理器和内存电量 让我的数据类中的数据成员具有公共 受保护 默认保护以便我不必使用 getter 是一个坏主意吗