布尔类型属性的命名
项目中,在一个JavaBean中遇到了一个布尔类型属性值命名的问题,
// 基本数据类型
private boolean isTest;
public boolean isTest() {
return isTest;
}
public void setTest(boolean test) {
isTest = test;
}
// 包装类
private Boolean isDVP;
public Boolean getDVP() {
return isDVP;
}
public void setDVP(Boolean DVP) {
isDVP = DVP;
}
从上面我们可以看到,当我们给JavaBean的布尔类型的属性变量命名为isXXX时,利用idea给我们生成的getter和setter方法它们并不是属性名再加上set或者get。而我们的框架在序列化时,一般都是直接利用getter方法的方法名去掉get(boolean类型是去掉is)后的名字去匹配我们传入的变量名。如果这时,我们传入的变量名仍然是isXXX(上例的话是isTest),那么框架在序列化时,就不能配到值。如下所示:
<bean id="student" class="com.smart.domain.Student" lazy-init="true">
<!-- 以下的属性值通过com.smart.domain.Student中的setter方法注入,其中<property>标签中的
name属性的名字要与Student类中的setter方法去掉set后的名字相同,如setXXX(),则,name="XXX"。
这里的name并不是和我们Student类中相应的属性变量名相同 -->
<property name="isTest"> // 在idea中此处的"isTest"变量会飘红,正确的写法应该是 name="test"
<value>true</value>
</property>
<property name="Aaaa">
<value>1111</value>
</property>
<property name="isDVP"> // 这里也会飘红。
<value>dvp</value>
</property>
</bean>
所以一般不推荐给布尔类型变量命名为isXXX。
JavaBean属性的命名规范
- 对于常规属性 <propertyName> ,如,userName, 属性名称的第一个单词小写且字母个数大于1,第二个单词首字母大写 。对应的getter/setter方法名为:get /set + <PropertyName>(), 即属性名称的第一个单词的首字母改成大写, 前面再加上"get"或"set"前缀。如,setUserName()。
- 对于布尔类型 <propertyName> , 可以按常规属性的规则编写getter/setter方法外, getter方法可以使用 is + <PropertyName>()的形式来代替。这里不推荐用isXXX给布尔类型变量命名,而且最好使用封装类的布尔类型而不是基本类型。
- 对于非常规属性<pName>, 属性名称的第一个单词小写且字母个数等于1,第二个单词首字母大写 。对应的getter/setter方法名可以为:get/set+ <pName>(), 即属性名称不变,第一个单词的首字母任然为小写,前面再加上"get"或"set"前缀。这种方式可以正常运行。
- 对于非常规属性<PName>, 属性名称的前两个字母都是大写 。即连续两个大写字母开头的属性名。 对应的getter/setter方法名为: get/set + <PName>(), 即属性名称不变,前面再加上"get"或"set"前缀。
总结
1、JavaBean的属性命名规则尽量使用常规的驼峰命名规则。
2、属性名第一个单词尽量避免使用一个字母:如eBook, eMail。
3、布尔类型变量属性名避免使用 “is” 开头的名称。
4、在框架中一般都是利用JavaBean的setter和gette方法对属性进行处理,所以我们给JavaBean中的属性传值时,一定要注意传入值的变量名一定要和setter和getter方法名去掉set和get后的名字相同。