【发布时间】:2014-12-05 12:54:02
【问题描述】:
例如,当您拥有class Room 时,每个房间都获得(或至少应该获得)不同的房间号,您是否允许自己将变量命名为roomNumber 而不仅仅是room?因为您已经知道它属于 Room 类,所以您可以在 roomNumber 中省略 room,而将其保留为 number。为了保持一致性,我想要么包含该类已经指定的信息,要么总是忽略它。
Class Room {
private int roomNumber;
Room(int roomNumber) {
this.roomNumber = roomNumber;
}
}
或
Class Room {
private int number;
Room(int number) {
this.number = number;
}
}
我正在考虑如果你使用 room.getRoomNumber() 或 room.getNumber(); 会是什么样子在大多数情况下这会更有意义。
【问题讨论】:
-
是否可以使用其他类型的数字?例如,床位数?
-
好点。是的,一个房间也可以存储其中的床位数量是有意义的。
-
应该减少这种冗余,但是您的示例选择得很好:“房间号”是一个众所周知的概念,而“数字”是一个无名的概念。在这里使用缩写“no”/“nr”可能更符合某些人的口味。一个更清晰的字符串(“Room 013”、“Room 12A”)。
-
DoorNumber 或类似的不重复“房间”但能更好地解释目的的东西怎么样。
-
我们也应该在某一天开始质疑的另一个问题在于“get”前缀。我们可以询问房间的“号码”或“门号”(我喜欢这个),但询问房间获取它的号码是什么意思?问题是我们不得不说 get 来区分 getter 和 setter 方法。而且我们习惯于添加 get 以至于我们看不到它。使用 Smalltalk 语法的语言没有这个问题,因为你会说 doorNumber 用于 getter 和 doorNumber: 用于设置器(顺便说一句,没有括号)
标签: java variables naming-conventions readability consistency