对于返回对象的属性/属性/成员的方法的命名有什么好的经验法则?如果一个对象具有一些不可变的质量“blarg”,那么返回该质量的方法应该称为“blarg()”还是“getBlarg()”?例如,Java API 是不一致的:大多数属性都是通过“get”方法访问的(即使是那些没有相应的“set”方法的),但我们也有类似 Object.hashCode() 而不是 Object。获取哈希码()。
更新:属性是否是字段(在实现中)是否应该在这里确定?那么在二维空间中表示不可变点的类呢?无论该点是存储为 (x,y) 还是 (r,theta),我仍然需要所有四个属性的访问器。它们应该是 getX()、getY() 等,还是只是 x()、y() 等?从用户的角度来看,由于我们不希望用户知道/关心我们的实现,这四个不应该都具有相同的命名约定吗?
最佳答案
取决于语言。
在 Smalltalk 中,对于 getter 的约定是 blarg,对于 setter 是 blarg:。
在 Java 中,JavaBeans约定是 getBlarg() 和 setBlarg()。加上 bool 属性的 isBlarg()。
您提到了没有 getter 和 setter 的情况。这是有道理的,因为有些属性是只读的。
当您遵循约定时,您会获得其他人更容易阅读的代码。有时工具支持。例如,许多工具都可以识别 JavaBeans 约定。
JavaBeans 约定直到 Java 1.1 才出现。所有 Object 方法(例如 hashCode())都早于此。并且无法更改以实现向后兼容性。
关于oop - 我应该什么时候开始一个方法名称,它获取带有 "get-"前缀的属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/296719/