我非常相信一致性,因此也是惯例。
但是,我目前正在用 Java 开发一个框架,其中这些约定(特别是get
/set
前缀约定)似乎妨碍了可读性。例如,某些类将具有id
和name
属性,并且使用o.getId()
而不是o.id()
似乎完全没有意义,原因有很多:
- 这些类是不可变的,因此(通常)不会有相应的设置器,
- 没有混乱的机会,
- 在
get
这种情况下,没有传达额外的语义,并且 get
我在整个库中非常一致地使用这种无命名模式。
我从 JavaCollection
类(以及 Java 平台库中的其他类)中得到了一些保证,这些类也违反了 JavaBean 约定(例如,它们使用size
而不是getSize
等)。
为了解决这个问题:组件永远不会被用作 JavaBean,因为它们不能以这种方式有意义地使用。
另一方面,我不是一个经验丰富的 Java 用户,我不知道其他 Java 开发人员对库的期望。我可以按照 Java 平台类的示例进行操作,还是认为它的风格不好?回想起来,Java 库类中违反get
/set
约定是否被视为错误?或者在不适用时忽略 JavaBean 约定是否完全正常?
(Java 的 Sun 代码约定根本没有提到这一点。)