1. 首页
  2. IT资讯

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

“u003Cblockquoteu003Eu003Cpu003E转载:https:u002Fu002Fmp.weixin.qq.comu002Fsu002F9hcip25u1HKPjj5R84LB-gu003Cu002Fpu003Eu003Cpu003E公众号:Java技术栈u003Cu002Fpu003Eu003Cu002Fblockquoteu003Eu003Cpu003E最近在做Code Review,写下了这篇文章:代码写成这样,老夫无可奈何!,说多了都是泪啊。。u003Cu002Fpu003Eu003Cpu003Eu003Cstrongu003E最近又有人同事跑过来质疑我:u003Cu002Fstrongu003E 为什么变量名取名不能用 isXXX 这种方式,这样有什么问题?!u003Cu002Fpu003Eu003Cpu003E醉了,讲了好多次都记不住,我让他自己去看阿里巴巴的《Java开发手册》,或者自行百度,说实话,有点工作经验人都知道,这都是基础的东西。u003Cu002Fpu003Eu003Cpu003E本没什么好写的,鉴于有好多小白程序员,今天栈长就把为什么不能用 isXXX 拿出来分享一篇文章吧,希望对你有用。u003Cu002Fpu003Eu003Cpu003E首先我们来看阿里巴巴的《Java开发手册》关于 isXXX 是怎么定义的吧:u003Cu002Fpu003Eu003Cblockquoteu003Eu003Cpu003E【强制】POJO 类中布尔类型变量都不要加 is 前缀,否则部分框架解析会引起序列化错误。u003Cbru002Fu003E反例:定义为基本数据类型 Boolean isDeleted 的属性,它的方法也是 isDeleted(),RPC 框架在反向解析的时候,“误以为”对应的属性名称是 deleted,导致属性获取不到,进而抛出异常。u003Cu002Fpu003Eu003Cu002Fblockquoteu003Eu003Cpu003E上面的规范很容易理解吧,就是如果使用 isXXX 这种命名形式会引起潜在的异常呗!u003Cu002Fpu003Eu003Cpu003E获取阿里巴巴的《u003Cstrongu003EJava开发手册u003Cu002Fstrongu003E》完整版,请关注微信公众号:u003Cstrongu003EJava技术栈u003Cu002Fstrongu003E,在后台回复:u003Cstrongu003E手册u003Cu002Fstrongu003E。u003Cu002Fpu003Eu003Cpu003Eu003Cstrongu003E我们再来看一段 IDE 生成的 getteru002Fsetter 代码:u003Cu002Fstrongu003Eu003Cu002Fpu003Eu003Cdiv class=”pgc-img”u003Eu003Cimg src=”http:u002Fu002Fp3.pstatp.comu002Flargeu002Fpgc-imageu002F698fc9b49304442793487695f1a81b43″ img_width=”593″ img_height=”569″ alt=”疯了!疯了!同事又问我为什么不能用 isXXX” inline=”0″u003Eu003Cp class=”pgc-img-caption”u003Eu003Cu002Fpu003Eu003Cu002Fdivu003Eu003Cpu003E变量 isMarried 生成的 getteru002Fsetter 方法是:isMarriedu002FsetMarried,有些框架就会去找对应的 married 变量,然后就找不到了…u003Cu002Fpu003Eu003Cpu003E再看变量 graduated,因为都是 boolean 变量,所有生成的逻辑和 isMarried 一样,根据上述规范,它不会产生找不着值的情况,这也是为什么不建议使用 isXXX的命名形式。u003Cu002Fpu003Eu003Cpu003E这个问题我之前有个同事在使用某个 Web 框架的时候就遇到过,在页面上使用该框架的标签显示对象的值,如:xx.xxx,然后就死活取不到值,还报异常,最后定位就是这个问题。u003Cu002Fpu003Eu003Cpu003E再看到有同事这样写,或者问你为什么,把这篇文章丢给他吧。u003Cu002Fpu003E”

原文始发于:疯了!疯了!同事又问我为什么不能用 isXXX

主题测试文章,只做测试使用。发布者:乾奕,转转请注明出处:http://www.cxybcw.com/26336.html

联系我们

13687733322

在线咨询:点击这里给我发消息

邮件:1877088071@qq.com

工作时间:周一至周五,9:30-18:30,节假日休息

QR code