可访问数据的 Java 约定。 (公共(public)访问器和 getter /命名)

标签 java naming-conventions getter-setter

通过 Java API,您会看到许多冲突的命名和实践,这让我很困惑。

例如:

String类有一个名为 count 的私有(private)变量(Integer),它跟踪字符串的大小,但是这是由名为 length() 的 getter 返回的>.

如果你转向任何类型的数组,它们没有长度的 getter 方法,它们只是通过公共(public)访问器传递变量,并且可以通过 arrayInstance.length 获取。

回到 String 类,我们有 String#getBytes() 方法,它是一个 getter,类似于 length() getter,但是执行的逻辑稍微多一些获取并返回值。

就我个人而言,创建一个前缀为 get 的 getter 似乎是多余的,例如我宁愿输入 GamePacket#data() 而不是 GamePacket#getData () 但是我觉得这个命名背后可能有更深层次的含义,而不仅仅是不一致。

此外,为什么 Array[] 不使用 length 的 getter?

有好心人可以帮我解释一下吗?

最佳答案

Getter(和 setter)来自 Java Bean 规范。使用它们的原因有很多:

  • 大多数 Java 开发人员都希望访问器被这样命名
  • 遵循这些约定的 API 更容易发现。例如,在我的 IDE 中,我经常按 get CtrlSpace 来发现对象中可用的所有信息。
  • 许多 API 和框架都依赖于这些约定来工作:JSP EL、从请求参数填充 bean 的 MVC 框架、JPA、Spring 等依赖注入(inject)框架等。

通常将 getter 命名为与保存信息的私有(private)变量相同的方式,但重要的是封装和公共(public) API,因此没有什么能阻止您计算 getter 中的值,或者以不同的方式命名私有(private)字段。

关于可访问数据的 Java 约定。 (公共(public)访问器和 getter /命名),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29843508/

相关文章:

java - Java 包名中的下划线——不好吗?

python - 命名变量,最佳约定

javascript - 什么是 Javascript 中的虚拟 Getter 和 Setter?

java - 您可以在创建构造函数时调用对象上的方法吗?

java - 在自定义适配器类中调用 Activity 方法

java - 收到错误 [Dagger/MissingBinding]

setter 中的 Swift 返回值

java - 如何将日期时间字段保存到cosmosdb "SQL API/DocumentDb"?

reactjs - React 类名命名约定

javascript - 在 JavaScript 对象中实现 setter 和 getter