通过
Java API,您可以看到无数次冲突的命名和实践,这对我来说真令人困惑.
例如:
String类有一个私有变量(Integer),以count的名字跟踪字符串的大小,但是这是由一个getter以length()的名称返回的.
如果你移动到任何类型的数组,而不是一个getter方法的长度,他们只是传递变量通过一个公共访问器,它可以通过arrayInstance.length获得.
回到String类,我们有String#getBytes()方法,它是一个getter,类似于long()getter,但是执行稍微更多的逻辑来获取和返回值.
对我来说,个人来说,创建一个带有前缀get的getter似乎是多余的,例如我更喜欢输入GamePacket#data()和GamePacket#getData(),但是我觉得这个命名背后可能会有更深层的意义,而不是只是不一致.
另外,为什么Array []不使用getter的长度?
有没有人可以对我说明一点点光呢?
解决方法
Getters(和setter)来自Java Bean规范.使用它们的原因是多重的:
>大多数Java开发人员都希望访问者可以这样命名
>遵守这些约定的API更容易发现.例如,在我的IDE中,我经常会按Ctrl键找到对象中的所有可用信息.
>许多API和框架依赖于这些约定:JSP EL,MVC框架从请求参数中填充bean,JPA,依赖注入框架,如Spring等.
您通常以与保存信息的私有变量相同的方式命名getter,但重要的是封装和公共API,所以没有什么可以阻止您在getter中计算值,或者以不同的方式命名私有字段.