疯了!同事又问我为什么不能用 isXXX

简介: 最近在做Code Review,写下了这篇文章:代码写成这样,老夫无可奈何!,说多了都是泪啊。。

最近在做Code Review,写下了这篇文章:代码写成这样,老夫无可奈何!,说多了都是泪啊。。


最近又有人同事跑过来质疑我: 为什么变量名取名不能用 isXXX 这种方式,这样有什么问题?!


醉了,讲了好多次都记不住,我让他自己去看阿里巴巴的《Java开发手册》,或者自行百度,说实话,有点工作经验人都知道,这都是基础的东西。


本没什么好写的,鉴于有好多小白程序员,今天栈长就把为什么不能用 isXXX 拿出来分享一篇文章吧,希望对你有用。


首先我们来看阿里巴巴的《Java开发手册》关于 isXXX 是怎么定义的吧:


【强制】POJO 类中布尔类型变量都不要加 is 前缀,否则部分框架解析会引起序列化错误。

反例:定义为基本数据类型 Boolean isDeleted 的属性,它的方法也是 isDeleted(),RPC 框架在反向解析的时候,“误以为”对应的属性名称是 deleted,导致属性获取不到,进而抛出异常。


上面的规范很容易理解吧,就是如果使用 isXXX 这种命名形式会引起潜在的异常呗!


获取阿里巴巴的《Java开发手册》完整版,请关注微信公众号:Java技术栈,在后台回复:手册。


我们再来看一段 IDE 生成的 getter/setter 代码:

public class Staff {
    private String name;
    private boolean graduated;
    private boolean isMarried;
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public boolean isGraduated() {
        return graduated;
    }
    public void setGraduated(boolean graduated) {
        this.graduated = graduated;
    }
    public boolean isMarried() {
        return isMarried;
    }
    public void setMarried(boolean married) {
        isMarried = married;
    }
}

变量 isMarried 生成的 getter/setter 方法是:isMarried/setMarried,有些框架就会去找对应的 married 变量,然后就找不到了…


再看变量 graduated,因为都是 boolean 变量,所有生成的逻辑和 isMarried 一样,根据上述规范,它不会产生找不着值的情况,这也是为什么不建议使用 isXXX 的命名形式。


这个问题我之前有个同事在使用某个 Web 框架的时候就遇到过,在页面上使用该框架的标签显示对象的值,如:xx.xxx,然后就死活取不到值,还报异常,最后定位就是这个问题。


再看到有同事这样写,或者问你为什么,把这篇文章丢给他吧。。


相关文章
|
7月前
aviator 属实搞事情
aviator 属实搞事情
52 0
|
9月前
|
SQL 缓存 Java
终于来新同事了,没想到竟是我噩梦的开始
终于来新同事了,没想到竟是我噩梦的开始
45 0
|
编解码 前端开发 程序员
刚入职的程序员做不好哪些事情容易被开除?
刚入职的程序员做不好哪些事情容易被开除?
733 0
|
存储 Java
一次代码走查看出来同事的问题
一次代码走查看出来同事的问题
110 0
|
Linux 程序员 Shell
老板对我说,你要是能找出公司里摸鱼的人,我就给你涨薪!于是我写了两个脚本……
老板对我说,你要是能找出公司里摸鱼的人,我就给你涨薪!于是我写了两个脚本……
137 0
老板对我说,你要是能找出公司里摸鱼的人,我就给你涨薪!于是我写了两个脚本……
|
移动开发 运维 小程序
壮士请留步,你长得好像我同事
蚂蚁集团 mPaaS 招兵买马 ing
812 0
壮士请留步,你长得好像我同事
|
程序员
程序员离职带走源码竟获利800万,网友:我一般都是删库跑路
程序员辞职带走自己写的源码算违法吗? 程序员属于特殊职业,正常来说,公司会与程序员签订保密或所有权协议的。如果没有签订,按照法理来推论,在工作期间所有制作或参与的代码都属于公司财产,属于工作内容范围内的职责,未经公司许可带走或拷贝是违法的,这种行为可有公司自诉也可由司法部分公诉,具体要看给公司造成的损害程度。
1560 0
|
前端开发 Java 程序员
【程序媛晒83行代码】认真工作的程序媛原来是这样,你想到了嘛?
据说认真工作的程序员魅力值加10,这段代码你能猜的出来嘛。
3120 0

相关实验场景

更多