为什么阿里强制 boolean 类型变量不能使用 is 开头
点击关注公众号,回复“2T”获取2TB学习资源!
互联网架构师后台回复 2T 有特别礼包
上一篇:深夜看了张一鸣的微博,让我越想越后怕
来源:blog.csdn.net/belongtocode/article/details/100635246
背景
平时工作中大家经常使用到boolean以及Boolean类型的数据,前者是基本数据类型,后者是包装类,为什么不推荐使用isXXX
来命名呢?到底是用基本类型的数据好呢还是用包装类好呢?
例子
1.其他非boolean类型
private String isHot;public String getIsHot() {return isHot;}
2.boolean类型
private boolean isHot;public boolean isHot() {return isHot;}
3.包装类型
private Boolean isHot;public Boolean getHot() {return isHot;}
4.不以is开头
private boolean hot;public boolean isHot() {return hot;}
5.包装类型
private Boolean hot;public Boolean getHot() {return hot;}
其实阿里巴巴发布的java开发手册中就写明了,强制规定,布尔类型的数据,无论是boolean还是Boolean都不准使用isXXX来命名
对于非boolean类型的参数,getter和setter方法命名的规范是以get和set开头
对于boolean类型的参数,setter方法是以set开头,但是getter方法命名的规范是以is开头
包装类自动生成的getter和setter方法的名称都是
getXXX()
和setXXX()
1.其实javaBeans规范中对这些均有相应的规定,基本数据类型的属性,其getter和setter方法是getXXX()
和setXXX
,但是对于基本数据中布尔类型的数据,又有一套规定,其getter和setter方法是isXXX()
和setXXX
。但是包装类型都是以get开头
2.这种方式在某些时候是可以正常运行的,但是在一些rpc框架里面,当反向解析读取到isSuccess()
方法的时候,rpc框架会“以为”其对应的属性值是success,而实际上其对应的属性值是isSuccess,导致属性值获取不到,从而抛出异常。
总结
1、boolean类型的属性值不建议设置为is开头,否则会引起rpc框架的序列化异常。
2、如果强行将IDE自动生成的isSuccess()
方法修改成getSuccess()
,也能获取到Success属性值,若两者并存,则之后通过getSuccess()
方法获取Success属性值。
工作中使用基本类型的数据好还是包装类好
咱们举个例子,一个计算盈利的系统,其盈利比例有正有负,若使用了基本类型bouble定义了数据,当RPC调用时,若出现了问题,本来应该返回错误的,但是由于使用了基本类型,返回了0.0,系统会认为没有任何问题,今年收支平衡,而不会发现其实是出现了错误。
若使用了包装数据类型Double,当RPC调用失败时,会返回null,这样直接就能看到出现问题了,而不会因为默认值的问题影响判断。
其实阿里java开发手册中对于这个也有强制规定:
因此,这里建议大家POJO中使用包装数据类型,局部变量使用基本数据类型。
感谢您的阅读,也欢迎您发表关于这篇文章的任何建议,关注我,技术不迷茫!小编到你上高速。
· END ·
最后,关注公众号互联网架构师,在后台回复:2T,可以获取我整理的 Java 系列面试题和答案,非常齐全。
正文结束
推荐阅读 ↓↓↓
1.不认命,从10年流水线工人,到谷歌上班的程序媛,一位湖南妹子的励志故事
2.如何才能成为优秀的架构师?
3.从零开始搭建创业公司后台技术栈
4.程序员一般可以从什么平台接私活?
5.37岁程序员被裁,120天没找到工作,无奈去小公司,结果懵了...
6.IntelliJ IDEA 2019.3 首个最新访问版本发布,新特性抢先看
7.这封“领导痛批95后下属”的邮件,句句扎心!
8.15张图看懂瞎忙和高效的区别!
一个人学习、工作很迷茫?
点击「阅读原文」加入我们的小圈子!
为什么阿里强制 boolean 类型变量不能使用 is 开头相关推荐
- 为什么阿里强制 boolean 类型变量不能使用 is 开头?
欢迎关注方志朋的博客,回复"666"获面试宝典 来源:blog.csdn.net/belongtocode/article/details/100635246 背景 平时工作中大家 ...
- java定义boolean命名_阿里规范:为何boolean类型变量命名禁用is开头
java中,对于非boolean类型的参数,getter和setpXMPater方法命名的规范是以get和set开头,如下: private String Success; public String ...
- JAVA的知识点4——字符型变量/常量 boolean类型变量/常量
字符型变量/常量 字符型在内存中占2个字节,在Java中使用单引号来表示字符常量.例如'A'是一个字符,它与"A"是不同的,"A"表示含有一个字符的字符串. 例 ...
- 为什么阿里巴巴不建议boolean类型变量用isXXX?
背景: 平时工作中大家经常使用到boolean以及Boolean类型的数据,前者是基本数据类型,后者是包装类,为什么不推荐使用isXXX来命名呢?到底是用基本类型的数据好呢还是用包装类好呢? 例子: ...
- 为什么阿里巴巴禁止开发人员 boolean 类型变量使用 isXXX 来命名?
>>号外:关注"Java精选"公众号,菜单栏->聚合->干货分享,回复关键词领取视频资料.开源项目. 背景 平时工作中大家经常使用到boolean以及Boo ...
- FreeMarker 输出Boolean类型变量默认值
直接使用表达式 ${searchAll} 会遇到空异常 . . 使用转换表达式 ?string('true','false') 这样,默认的情况, 就是 false 表达式含义 ...
- 记-阿里开发手册规范(JAVA)
从接触java以来,我们一直学习着各种技术和架构.但我们常忽略代码可读性和一些特殊的规范和约定.有很多人尤其是新人写的代码,运行可能没什么问题.但却不忍直视,甚至内涵风险.业内代码规范可能各有各的理解 ...
- 京东向下沉市场打出“京喜”,拼多多和阿里惊不惊喜?
图片来源于网络 文|陈小江 来源 | 螳螂财经(ID:TanglangFin) 天猫和京东双11数钱大战又开始了. 2019年天猫双11全球狂欢节大家玩得很嗨,只用96秒就帮天猫成交额突破100亿,比 ...
- 阿里《Java开发手册》中的 1 个bug!
本来打算写一篇<阿里巴巴为什么不允许日志输出时,使用字符串拼接?>的文章,主要是想从性能方面来说此问题,可在文章写到一半进行性能测试时,却发现了一个异常问题,实际测试的结果和手册上描述的结 ...
- delete postman 传参_PostMan 传参boolean 类型,接口接受的值一直是false
情形: 最近写前台页面的一个按钮,功能是:点击后切换状态,显示是或否. 字段名称是isTest,类型是boolean . 写完接口,拿postMan测试,传参如下: 但是后台接口接受的数据 一直是fa ...
最新文章
- LeetCode Valid Number(判断字符串是否是合法的数字表示 )
- IT项目经理学习-德鲁克时间管理
- 南卫理公会大学计算机科学,南卫理公会大学哪个专业好?
- 用word发布CSDN文章
- utf8 and unicode
- Java DataOutputStream writeChars()方法及示例
- JS组件系列——BootstrapTable+KnockoutJS实现增删改查解决方案(三):两个Viewmodel搞定增删改查...
- 空指针、NULL指针、零指针
- linux下文件打包、压缩详解
- 学习一下物联网协议 wifi zigbee 蓝牙等等----从wifi就开始 wifi和wifi协议 关于wifi协议本身我们需要了解那些东西?
- ROS--基于机器人操作系统设计与实现
- 彻底卸载vscode Linux,Ubuntu vscode 安装与卸载
- 【C语言】初识C语言(上篇)
- 技术分享 | MySQL 突如其来的主从复制延迟
- Linux终端不能显示表情符问题
- GBASE 8C——SQL参考 5 全文检索
- C语言实现strcpy和strcmp
- 总结机器学习优化器Optimizer
- 用MATLAB做简单的运动模糊
- 用python对excel进行单元格操作
热门文章
- Android 不自动弹出软键盘
- $(document).ready()方法和window.onload()方法
- 【smart-transform】取自Atom的babeljs/cs/ts智能转es5 库
- Instagram新推两款AI过滤工具,没错!背后功臣就是Deep Text
- 离散数学蕴含等值式前件为假时命题为真的理解
- Asp.Net中OnClientClick与OnClick之我见
- 关于win32程序如何共享数据
- .NET多线程编程(2)——Thread类
- 楼主,不知道为什么这么流行
- Mac新手使用技巧——AirDrop