我为患者所代表的患者提供这些属性。我想知道命名他们的最佳做法是什么?
首先想到的是将它们命名为:
boolean isInLactationPeriod;
boolean isPregnant;
boolean isPreparingPregnant;
boolean hasSufferedLowBloodGlucoseRecently;
boolean hasComplications;
但是我也遇到过一些建议,即java属性不应该是带有前导/是的名称,而是将它们留给getter / setter方法,例如
boolean pregnant;
boolean isPregnant() {
return pregnant;
}
哪一个更好?
答案 0 :(得分:5)
它可能更基于便利性或基于意见。但您可以使用isPregnant
,因为它或多或少地表明了这一点。
请参阅Java文档:
8.3.2布尔属性
此外,对于布尔属性,我们允许匹配的getter方法 模式:
public boolean is();
可以提供这种“是”方法而不是a “get”方法,或者除了a之外还可以提供 “得到”方法。在任何一种情况下,如果“是” 方法存在于布尔属性然后我们将使用 “是”方法来读取属性值。一个例子 布尔属性可能是:
public boolean isMarsupial(); public void setMarsupial(boolean m);
答案 1 :(得分:4)
这两个选项看起来都不错,但我更喜欢后者。
是前缀可用于布尔变量和方法。 isSet, isVisible,isFinished,isFound,isOpen这是命名约定 用于Sun用于Java核心的布尔方法和变量 包。
使用is前缀解决了选择错误布尔值的常见问题 名称如status或flag。 isStatus或isFlag根本不适合,和 程序员被迫选择更有意义的名字。
布尔变量的Setter方法必须设置前缀,如:
void setFound(boolean isFound);
is前缀有一些替代方案,在某些方面更适合 的情况。这些是,可以和应该是前缀:
boolean hasLicense(); boolean canEvaluate(); boolean shouldAbort = false;
请参阅this
此外,命名字段
pregnant
看起来更合适,getter / 塞特斯的名字会更有意义。Is
是一个动词,可以是 避免在变量名中使用。
答案 2 :(得分:1)
基本上,SCJP 6书中有关bean命名约定的内容如下:
有没有任何内容,所以理想情况下,如果你的变量名是一个形容词,我想你应该使用是,否则得到。
然后,那些是惯例,像我这样的人会感谢你尊重他们(以及一些工具和框架,如Spring),但在某些情况下 可以让人类读者更有意义。如果你想违反惯例,那就取决于你和你的最佳判断。